【问题标题】:OpenGL How to draw curves being part of circle depends of last point location with requirements: fixed radius, last point givig directionOpenGL如何绘制曲线作为圆的一部分取决于最后一个点的位置和要求:固定半径,最后一个点给出方向
【发布时间】:2016-09-12 22:03:07
【问题描述】:

我也不能将问题放在一行中:

如何绘制属于圆的曲线(取决于终点)

让:

  • p1=(x1,y1) 是第一个点
  • 必须是线 p2=(x2,y2) 是绘制曲线的起点
  • p3=(x3,y3) 为终点(鼠标位置)

要求:

  • 如果 P3 越来越接近 p2,则潜在半径变得越大
  • p3 描述绘制方向
  • 如果 p3 与 p2 平行,则不应绘制任何内容(或绘制线 p3>p2)
  • 如果 p3 等于 p1 它应该画一个比较大的轮子,

编辑: 我想我找到了如何绘制圆的那部分的解决方案,请看下面的 gif:

【问题讨论】:

  • 动画中的半径看起来远非固定。也许您可以描述一下应该如何更好地工作
  • 请更正您的要求。 “如果 p3 与 p2 平行”是什么意思?这是没有意义的,因为 p3 和 p2 都是点。
  • @Brieg。看起来鼠标越接近 P1,潜在半径就越大。或者可能是 P1 和 P2 之间线段的距离。
  • @infixed 它不能与 P1 和 P2 相距甚远 - 当鼠标 loc(P2) 靠近最后位置 (P1) 时,半径看起来很大。它在 gif 的第一秒显示。这就是为什么我不能简短地描述它。

标签: c++ algorithm opengl trigonometry


【解决方案1】:


  • 切线A->B 表示法线Q 穿过(尚未找到)圆心D
  • 找到和弦R(即,段B-C)的中点M
  • 垂直于R 的线S 穿过M 也穿过D

所以:构造线QS 并找到它们的交点D。线段B-D 的长度是圆的半径。使用半径和中心D,您应该能够计算出弧线B->C

mspaintpaint.net

中的 b4 9000 小时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多