GDI+中画两条线,求两条线的交点坐标
解决方案 »
- winform中备份数据的时候,怎么显示进度条
- Linq 是不是可以实现这样的功能?
- 在关键字 'ELSE' 附近有语法错误。
- 为何我现在总不能回复贴子?!咋打开都没有回复框嗫?怒
- winform datagridview 嵌套
- 在结束主线程之前怎么去先结束另一个运行的线程。。
- System.UnauthorizedAccessException异常
- 我想定义一组常量在整个【解决方案】里都较方便调用,如何做较好?
- 如何画出控件的选中状态,像设计时的那样
- 大家好我是刚刚学电脑语言 给点提示吗 c++/c/c#/java 啊 谢谢
- HttpWebRequest/HttpWebResponse 在ASP中用什么代替????
- DtaaGrid为什么不能修改数据?
if(itLine->x2==itLine->x1)
{
v=(double)(itLineSort->y2-itLineSort->y1)/
(double)(itLineSort->x2-itLineSort->x1);
p.x=itLine->x1;
p.y=itLineSort->y1+(p.x-itLineSort->x1)*v;
}
else if(itLineSort->x2==itLineSort->x1)
{
u=(double)(itLine->y2-itLine->y1)/
(double)(itLine->x2-itLine->x1);
p.x=itLineSort->x1;
p.y=itLine->y1+(p.x-itLine->x1)*u;
}
else
{
u=(double)(itLine->y2-itLine->y1)/
(double)(itLine->x2-itLine->x1);
v=(double)(itLineSort->y2-itLineSort->y1)/
(double)(itLineSort->x2-itLineSort->x1);
p.x=(itLineSort->y1-itLine->y1+itLine->x1*u-itLineSort->x1*v)/(u-v);
p.y=(p.x-itLine->x1)*u+itLine->y1;
}
if(itLine->x1>itLine->x2)
{
if(p.x>itLine->x1
||p.x<itLine->x2)
return;
}
else
{
if(p.x<itLine->x1
||p.x>itLine->x2)
return;
}
if(itLine->y1>itLine->y2)
{
if(p.y>itLine->y1
||p.y<itLine->y2)
return;
}
else
{
if(p.y<itLine->y1
||p.y>itLine->y2)
return;
}
if(itLineSort->x1>itLineSort->x2)
{
if(p.x>itLineSort->x1
||p.x<itLineSort->x2)
return;
}
else
{
if(p.x<itLineSort->x1
||p.x>itLineSort->x2)
return;
}
if(itLineSort->y1>itLineSort->y2)
{
if(p.y>itLineSort->y1
||p.y<itLineSort->y2)
return;
}
else
{
if(p.y<itLineSort->y1
||p.y>itLineSort->y2)
return;
} return p;//此处的p为两线段交点
struct Line
{
long x1;
long y1;
long x2;
long y2;
};
类型.
设B线为: y2 = k2*x2 + b;两线相交时,x1 = x2, y1 = y2 ==>(k1-k2)*x1 = b - a;==> x1 = (b - a) / (k1 - k2)
...
设B线为: y2 = k2*x2 + b;两线相交时,x1 = x2, y1 = y2 ==>(k1-k2)*x1 = b - a;==> x1 = (b - a) / (k1 - k2)
这个方法最好呀.
即
k1=(aY2-aY1)/(aX2-aX1)
weisunding(鼎鼎)的方法与 zhudaneu(番茄酱)其实都是一样的.但是我说的问题是,由于线条是用户自行画上的,由于线条方向问题造成计算的结果与实际坐标相反,我正在找其中的规律.
以下这种情况可以计算出来
\
\
\
———*———
例如以下这种情况就计算不对了.
|
*
/|
/ |
/
/
/只怪自己对斜率基本没什么印象上,所以只好再研究研究吧.