【问题标题】:Find a specific point on a circle by a point & angle between them通过它们之间的点和角度找到圆上的特定点
【发布时间】:2014-05-01 18:45:36
【问题描述】:

我使用 C# WPF,我坚持了几天。

如何找到 M 点?

【问题讨论】:

  • (a,b)是圆心吗?
  • 是........
  • 而且由于这个问题是关于几何而不是编程的,所以如果不是完全题外话,它在很大程度上是题外话。 math.SE 用于一般数学问题(math.SO 用于高级理论,本主题不是)。

标签: math trigonometry


【解决方案1】:

基本三角学或旋转矩阵的应用(不要忘记:将中心平移到原点,然后旋转回初始位置):

XM=a+cos(C°)*(X1-a)-sin(C°)*(Y1-b)
YM=b+sin(C°)*(X1-a)+cos(C°)*(Y1-b)

三角函数的输入必须是弧度,1°=pi/180,C°=C*1°。


在屏幕坐标中,您必须首先将所有 y 分量替换为它们的负数,以获得正确定向的笛卡尔坐标系。然后返回屏幕坐标。结合起来,这导致将 Y1-b 和 YM-b 替换为 b-Y1 和 b-YM,从而得到公式

XM=a+cos(C°)*(X1-a)-sin(C°)*(b-Y1)
YM=b-sin(C°)*(X1-a)-cos(C°)*(b-Y1)

可以重新排列为

XM=a+cos(C°)*(X1-a)+sin(C°)*(Y1-b)
YM=b-sin(C°)*(X1-a)+cos(C°)*(Y1-b)

XM=a+cos(-C°)*(X1-a)-sin(-C°)*(Y1-b)
YM=b+sin(-C°)*(X1-a)+cos(-C°)*(Y1-b)

这在几何上也是有意义的,因为 x 轴上的反射会改变旋转方向。

【讨论】:

  • 没有圆的半径你是怎么计算出来的?
  • 对于旋转,您不需要任何圆的半径,它隐含在 (X1-a,Y1-B) 中。旋转保留半径。
  • 你的答案是错误的。不适用于圆:中心 (150,150),point1(150,3),radius(147),point2(?,?)。第 2 点需要为 3,150,但结果为 297,150。
  • 150,3 旋转 90° 平行于 (0,-1) 旋转 90°,得到 (1,0),因此 (150,150)+(147,0) )=(297,150) 完全正确。但是,旋转 -90° 会将 (0,-1) 变为 (-1,0),并会给出“大图” (3,150)。请记住,(1,0) 指向右侧,(0,1) 指向上方。
  • 我没有关注。我很抱歉,但你可以通过只使用我试图实现的东西来重复它吗? (第 3 条评论中的圆圈)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多