在单文档View窗口中从左至右任意画一条折线,然后从上至下垂直画一条直线(和折线相较),如何得到相较点的 Y轴数值??
谢谢了。
谢谢了。
解决方案 »
- 多文档视图中的类使用怎么会没有提示呢???
- HttpSendRequestA函数中的第2,4,5个参数怎么用?
- UDP服务器选择哪种模型比较好?
- 关于函数GetProfileInt()的问题,急啊!
- 哪位大哥有WINDOW画笔的源程序或者是类似的其他人做的源程序呀,小弟想学习一下,在此非常感谢了!
- 请问COM如何注册???-----------------------------
- 怎么在程序中调用画图程序打开某个图片?
- ___W2K服务程序中如何模拟按键___
- 请问谁有或者推荐一个VC6的插件,可以增加编辑器功能的。
- 各位大虾:我该怎么做
- 关于如何获取局域网内所有sql server服务器上的所有实例名的问题
- 如何得到listbxo的索引值
view的坐标原点(0,0)在左上角,x轴向右为正,y轴向下为正,
先求出你画的两条直线在这个坐标下的方程,然后解方程组求交点好了//纯数学理解
int
Calc_Two_Line_Point( double a1, double b1, double c1, double a2, double b2, double c2, OUT double *x, OUT double *y )
{
double xx, yy;
double e; e = ( a1 * b2 - a2 * b1 );
if( equ( e, 0 ) )
{
return 0;
} yy = ( a2 * c1 - a1 * c2 ) / e; if( equ( a2, 0 ) )
{
xx = ( -1 * b1 * yy - c1 ) / a1;
}
else
{
xx = ( -1 * b2 * yy - c2 ) / a2;
} *x = xx;
*y = yy; return 1;
}
//凡是直线都是ax + by + c = 0格式。
//点斜式求a, b, c
void
Calc_General_abc( double x, double y, double k, OUT double *a, OUT double *b, OUT double *c )
{
if( fabs( k ) >= WUQIONGDA )
{
//斜率很大
*a = 1.0;
*b = 0.0;
*c = -1 * x;
}
else if( equ( k, 0 ) )
{
//斜率为0
*a = 0.0;
*b = 1.0;
*c = -1 * y;
}
else
{
//一般的
double aa, bb, cc; //这条直线与X轴的交点
cc = ( ( k * x ) - y ) / k;
if( equ( cc, 0 ) )
{
//ax + by + c = 0;
//ax = -by;
//y = -ax / b
//y / x = - a / b
//k = - a / b
aa = 1;
bb = -1 / k;
}
else
{
bb = ( -1.0 * cc ) / ( y - k * x );
aa = ( -1.0 * bb * k );
} if( aa < 0.0 )
{
aa *= -1.0;
bb *= -1.0;
cc *= -1.0;
} *a = aa;
*b = bb;
*c = cc;
}
}