超高分求及简单的算法问题,我只是想看一下大家不同的算法,了解不同的人不同的思路

时间:2021-10-18 09:47:59
题目是这样的
已知一个Picture控件中的2个点A1,A2,和一个未知点A3,按A1,A2,A3的顺序排列
这3点都在同一条直线上(坐标系以PICTURE本身的坐标系为准,并且此直线可以任意方向放置),已知A1,A2的X,Y值,然后知道A3和A2的距离,怎么通过代码得到A3的X,Y值。

其实很简单的,看看大家的思路

14 个解决方案

#1


a3 to a2 is len, this is known

a2 to a1 is double z = ((x2-x1)^2 + (y2-y1)^2)^0.5

x3 = (len+z)*x2/z
y3 = (len+z)*y2/z



OK

#2


sorry

x3 = (len+z)*(x2-x1)/z + x1
y3 = (len+z)*(y2-y1)/z + y1


#3


楼上的忘了len可正可负呀!
所以代码为:
x3 = (len+z)*(x2-x1)/z + x1
y3 = (len+z)*(y2-y1)/z + y1
或者
x3 = (-len+z)*(x2-x1)/z + x1
y3 = (-len+z)*(y2-y1)/z + y1

#4


去看看最小二乘法吧。

#5


是的,这个算法我有想过。

不过请问你有没有注意到A1-A2-A3这个规定的顺序呢?
这样就不会有正负2个值的,请将算法再修正一下。不会出现2种情况的。加上一个平面中排列顺序一定的条件

还有,其他的朋友想想其他的算法。一个算法怎么够。。晕

#6


数学家的回答:
你可以回家睡觉了!

#7


是啊是啊,我还初中没毕业呀,我装出一副老成的样子来问问题,就怕你们不回答,所以,再请您帮助我一下。我知道,在数学家的眼里,孩子永远是最可爱的。OK?

#8


yes! you are very lovely!

#9


我本来想跟你说参数方程的,而且我这里有标准算法.但是您是初中还没有毕业的人,我讲了你也不会懂,还不如不讲.如果你真的十分执着,可以去找图形学的书来看,请看画直线一章,会对你有极大帮助,如果你看得懂的话.我还是权你先学好数学再说吧.
还有,上学的时候交个异性朋友是很值得日后回味的,不要错过了好日子了又后悔.

就到这里吧

#10


a1(x1,y1),a2(x2,y3),a3(x3,y3)
a2到a3的距离为len
如果三点在x或y坐标轴上,则a3(0,len)或a3(len,0)
其他:则
x3-x2/x3-x1=y3-y2/y3-y1
(x3-x2)^2+(y3-y2)^2=len
解出x3,y3
做小学数学ni

#11


我是在说自己ni,刚刚才看到上面的一些回答,本来是想开玩笑来着 :)

#12


可以这样认为 A1 A2 A3 在以A1为起点的一条射线上
射线的方程式
x = d1 * t + x0 
y = d2 * t + y0

由于已知 A1 ,A2 坐标
可以计算出 
A1 A2 两点距离 double distance = sqrt((A1.x-A2.x)*(A1.x-A2.x)+(A1.y-A2.y)*(A1.y-A2.y))
      令 t = distance
      代入方程可以计算 出 d1, d2 

然后我们还知道 A2,A3 的距离 为 T
可得
A3.x = d1* T + A2.x;
A3.y = d2* T + A2.y;

#13


可以这样认为 A1 A2 A3 在以A1为起点的一条射线上
射线的方程式
x = d1 * t + x0 
y = d2 * t + y0 (t>=0)

由于已知 A1 ,A2 坐标
可以计算出 
A1 A2 两点距离 double distance = sqrt((A1.x-A2.x)*(A1.x-A2.x)+(A1.y-A2.y)*(A1.y-A2.y))
      令 t = distance
      代入方程可以计算 出 d1, d2 

然后我们还知道 A2,A3 的距离 为 T
可得
A3.x = d1* T + A2.x;
A3.y = d2* T + A2.y;

#14


HEY,GUYS,谢谢回答了我问题哥哥们。不想说肉麻得话。:)
没有回答我问题得哥哥我就不谢了:)

没有回答我问题的还损我的,比如:
sobingman(丧尸)
我说:“我操你妈!!!你算谁呀!找骂呀你!!自恋狂滚一边去!!我操!!去死!!"

以后见着我请你闪边上一点,不然...见一次扁一次!我操你妈!!

#1


a3 to a2 is len, this is known

a2 to a1 is double z = ((x2-x1)^2 + (y2-y1)^2)^0.5

x3 = (len+z)*x2/z
y3 = (len+z)*y2/z



OK

#2


sorry

x3 = (len+z)*(x2-x1)/z + x1
y3 = (len+z)*(y2-y1)/z + y1


#3


楼上的忘了len可正可负呀!
所以代码为:
x3 = (len+z)*(x2-x1)/z + x1
y3 = (len+z)*(y2-y1)/z + y1
或者
x3 = (-len+z)*(x2-x1)/z + x1
y3 = (-len+z)*(y2-y1)/z + y1

#4


去看看最小二乘法吧。

#5


是的,这个算法我有想过。

不过请问你有没有注意到A1-A2-A3这个规定的顺序呢?
这样就不会有正负2个值的,请将算法再修正一下。不会出现2种情况的。加上一个平面中排列顺序一定的条件

还有,其他的朋友想想其他的算法。一个算法怎么够。。晕

#6


数学家的回答:
你可以回家睡觉了!

#7


是啊是啊,我还初中没毕业呀,我装出一副老成的样子来问问题,就怕你们不回答,所以,再请您帮助我一下。我知道,在数学家的眼里,孩子永远是最可爱的。OK?

#8


yes! you are very lovely!

#9


我本来想跟你说参数方程的,而且我这里有标准算法.但是您是初中还没有毕业的人,我讲了你也不会懂,还不如不讲.如果你真的十分执着,可以去找图形学的书来看,请看画直线一章,会对你有极大帮助,如果你看得懂的话.我还是权你先学好数学再说吧.
还有,上学的时候交个异性朋友是很值得日后回味的,不要错过了好日子了又后悔.

就到这里吧

#10


a1(x1,y1),a2(x2,y3),a3(x3,y3)
a2到a3的距离为len
如果三点在x或y坐标轴上,则a3(0,len)或a3(len,0)
其他:则
x3-x2/x3-x1=y3-y2/y3-y1
(x3-x2)^2+(y3-y2)^2=len
解出x3,y3
做小学数学ni

#11


我是在说自己ni,刚刚才看到上面的一些回答,本来是想开玩笑来着 :)

#12


可以这样认为 A1 A2 A3 在以A1为起点的一条射线上
射线的方程式
x = d1 * t + x0 
y = d2 * t + y0

由于已知 A1 ,A2 坐标
可以计算出 
A1 A2 两点距离 double distance = sqrt((A1.x-A2.x)*(A1.x-A2.x)+(A1.y-A2.y)*(A1.y-A2.y))
      令 t = distance
      代入方程可以计算 出 d1, d2 

然后我们还知道 A2,A3 的距离 为 T
可得
A3.x = d1* T + A2.x;
A3.y = d2* T + A2.y;

#13


可以这样认为 A1 A2 A3 在以A1为起点的一条射线上
射线的方程式
x = d1 * t + x0 
y = d2 * t + y0 (t>=0)

由于已知 A1 ,A2 坐标
可以计算出 
A1 A2 两点距离 double distance = sqrt((A1.x-A2.x)*(A1.x-A2.x)+(A1.y-A2.y)*(A1.y-A2.y))
      令 t = distance
      代入方程可以计算 出 d1, d2 

然后我们还知道 A2,A3 的距离 为 T
可得
A3.x = d1* T + A2.x;
A3.y = d2* T + A2.y;

#14


HEY,GUYS,谢谢回答了我问题哥哥们。不想说肉麻得话。:)
没有回答我问题得哥哥我就不谢了:)

没有回答我问题的还损我的,比如:
sobingman(丧尸)
我说:“我操你妈!!!你算谁呀!找骂呀你!!自恋狂滚一边去!!我操!!去死!!"

以后见着我请你闪边上一点,不然...见一次扁一次!我操你妈!!