怎么感觉像是在解几何问题啊。两条绿色的直线容易得到,然后找它们的交点,可行不
解决方案 »
- analysis server 服务未启动影响连接数据库吗?
- 疑惑中,请大家给我个建议或方法
- 如何把正在运行的exe文件复制到另外一个目录?
- WinForm程序如何实现皮肤更换?
- crystalreport 预览与实际打印不一样
- (救命呀)在数据库中怎么读image类型字段,里面是文字。
- 求通用数据访问类的源码!
- 如何打开文件夹,并选中指定文件?
- [请问]如何设置GridControl里的View的某一列为不可编辑列?
- 请教C# reportViewer报表的矩表的问题
- Transaction能不能用在CommandBuilder上?
- 在C#里面,用SqlClient命名空间怎么样连接OLAP Services
public void getFriendPoint2(Point MovePoint, Point pLT, Point pLB, Point pRT, Point pRB, out Point FriendLPoint,out Point FriendRPoint)
{
Point LeftTop = new Point(pLT.X, pLT.Y);
Point LeftBottom = new Point(pLB.X, pLB.Y);
Point RightTop = new Point(pRT.X, pRT.Y);
Point RightBottom = new Point(pRB.X, pRB.Y); Point FriendLPoint2 = new Point(0, 0);
Point FriendRPoint2 = new Point(0, 0); //求直线1的K,B,直线方程
Double KLtb = ((Double)LeftBottom.Y - (Double)LeftTop.Y) / ((Double)LeftBottom.X - (Double)LeftTop.X);
Double BLtb = LeftTop.Y - KLtb * LeftTop.X;
//FriendLPoint.Y = (int)(KLtb * (Double)FriendLPoint.X + BLtb);
//Test
LeftTop.Y = (int)(KLtb * (Double)LeftTop.X + BLtb); //求平行线的K,B,直线方程
Double Kparallel = ((Double)RightTop.Y - (Double)LeftTop.Y) / ((Double)RightTop.X - (Double)LeftTop.X);
Double Bparallel = (Double)MovePoint.Y - Kparallel * (Double)MovePoint.X;
//FriendLPoint.Y = (int)(Kparallel * (Double)FriendLPoint.X + Bparallel);
Double Kparallel2 = ((Double)LeftTop.Y - (Double)RightTop.Y) / ((Double)LeftTop.X - (Double)RightTop.X);
Double Bparallel2 = (Double)MovePoint.Y - Kparallel2 * (Double)MovePoint.X;
//FriendRPoint.Y = (int)(Kparallel2 * (Double)FriendPoint.X + Bparallel2);
//直线1与平行线的左焦点
{
// FriendPoint.Y =(int)(KLtb * (Double)FriendPoint.X + BLtb) ;
//FriendLPoint.Y = (int)(Kparallel * (Double)FriendLPoint.X + Bparallel);
FriendLPoint2.X = (int)((Bparallel - BLtb) / (KLtb - Kparallel));
// FriendPoint.X= (FriendPoint.Y- BLtb)/KLtb ;
// FriendLPoint.X =(FriendLPoint.Y - Bparallel)/Kparallel ;
FriendLPoint2.Y = (int)((BLtb * Kparallel - Bparallel * KLtb)/(Kparallel - KLtb));
}
//求直线2的K,B,直线方程
Double KRtb = ((Double)RightBottom.Y - (Double)RightTop.Y) / ((Double)RightBottom.X - (Double)RightTop.X);
Double BRtb = RightTop.Y - KRtb * RightTop.X;
//直线2与平行线的右焦点
//FriendRPoint.Y =(int)(KRtb * (Double)FriendRPoint.X + BRtb) ;
{
//FriendRPoint.Y = (int)(Kparallel2 * (Double)FriendRPoint.X + Bparallel2);
//FriendRPoint.Y =(int)(KRtb * (Double)FriendRPoint.X + BRtb) ;
//FriendRPoint2.X = (int)((Kparallel2 * (Double)FriendRPoint2.X + Bparallel2 - BRtb) / KRtb);
//FriendRPoint2.Y = (int)(Kparallel2 * (Double)FriendRPoint2.X + Bparallel2);
//FriendRPoint2.X = (int)((Bparallel2 - BRtb) / (KRtb - Kparallel2));
//FriendRPoint2.Y = (int)(KRtb * (Double)FriendRPoint2.X + BRtb);
FriendRPoint2.X = (int)((Bparallel2 - BRtb) / (KRtb - Kparallel2));
// FriendPoint.X= (FriendPoint.Y- BLtb)/KLtb ;
// FriendLPoint.X =(FriendLPoint.Y - Bparallel)/Kparallel ;
FriendRPoint2.Y = (int)((BRtb * Kparallel2 - Bparallel2 * KRtb) / (Kparallel2 - KRtb));
}
FriendLPoint = new Point(FriendLPoint2.X, FriendLPoint2.Y);
FriendRPoint = new Point(FriendRPoint2.X, FriendRPoint2.Y);