我想在VB.net中找出点和点之间的点的X和Y位置。由于没有“方向”属性(这会使这更容易......),我不知道如何做到这一点。
C#代码也可以接受,但我更喜欢vb,因为它不需要端口。
感谢您的帮助,这让我感到很疯狂!
答案 0 :(得分:4)
答案 1 :(得分:2)
你应该能够取两点的平均值:
Dim point1 as New Point(5, 2)
Dim point2 as New Point(25, 32)
Dim middlepoint as New Point((point1.X + point2.X)/2, (point1.Y + point2.Y)/2)
如果你想从一个点移动到另一个点,你可能会想要更像的东西:
Public Function MoveBetweenPoints(Point point1, Point point2, Double percentage) As Point
Dim x as Double
Dim y as Double
x = point1.X * (1.0-percentage) + point2.X * percentage
y = point1.Y * (1.0-percentage) + point2.Y * percentage
Return New Point(x,y)
End Function
通过指定要移动的百分比(从0到1),这将允许您从point1移动到point2
答案 2 :(得分:1)
如果第一点(x1,y1)和第二点是(x2,y2),则中点为(0.5 *(x1 + x2),0.5 *(y1 + y2))。
答案 3 :(得分:1)
简单的线性插值可以解决问题。
R = P1 + (P2 - P1) * f;
R为结果位置,P1为第一个位置,P2为第二个位置,f为插值因子(精确中间为0.5)。
对于一个点,如果您的点类不支持基本数学(例如System.Drawing.Point),则只应用于两个坐标
Dim R as Point;
R.X = P1.X + (P2.X - P1.X) * f;
R.Y = P1.Y + (P2.Y - P1.Y) * f;
答案 4 :(得分:0)
这实际上非常简单。
PointF p1 = new PointF(..., ...);
PointF p2 = new PointF(..., ...);
PointF midPoint = new PointF((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
两点的中点(x 1 ,y 1 )和(x 2 ,y 2 )是点((x 1 + x 2 )/ 2,(y 1 + y 2 ) / 2)。
答案 5 :(得分:0)
Point A=new Point(1,1);
Point B=new Point(6,8);
Point C=new Point(); //between point
C.X = (A.x+B.x)/2;
C.Y = (A.y+B.Y)/2;
当然,如果你有机会使用极坐标,你需要一个不同的公式:
d = sqrt(r1**2+r2**2-2(r1)(r2)cos[theta2-theta1]).
** X表示“对X权力”:D