当前位置: 首页 > 知识库问答 >
问题:

如何根据两个给定的点和描述圆段的给定高度绘制圆弧?

闻人宇定
2023-03-14

我试图画一个圆弧,基于两个给定的点和一个给定的高度来描述一个圆段。为了实现这一点,我将使用java.awt.graphics中的以下方法。

drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)

首先,我观察到x、y、width和height值描述了一个包含圆的矩形。

圆弧的中心是原点为(x,y)的矩形的中心,其大小由width和height参数指定。(http://docs.oracle.com/javase/7/docs/api/java/awt/graphics.html)

int dx = p1.x- p2.x;
int dy = p1.y - p2.y;
double len = Math.sqrt(Math.pow((double)dx, 2) + Math.pow((double)dy, 2));
radius = h/2 + len^2 / 8h
x = centerPoint.x - radius;
y = centerPoint.y - radius;
width = radius * 2;
height = radius * 2;

提前感谢!

共有1个答案

潘高岑
2023-03-14

在弦的一半长度,弧(也称为矢)的高度和半径之间有一个众所周知的关系(例如,见这里)。设弦长(p1与p2之间的距离为l=2d,弧高为h,半径为r

r=(d2+h2)/(2h)

圆心在弦的垂直平分线上,与弦的距离为r-h,与弧的相对侧。1然后可以使用标准的反三角函数来获得弦的起始角和结束角。

 类似资料:
  • 我查阅了多个用不同形式的数学(微积分、几何、三角学等)编写的示例,但无法将其中任何一个转换为代码。我的理解是,给出的值产生两个不同的中心/交点。这些就是我需要弄清楚的。 这个解释器是在Arduino上运行的,用C语言编写的,如果有人能用伪代码来指导我,我会非常感激的。 谢了!

  • 我已经10年没做过这样的数学了...我正在编程一个2D游戏和移动一个球员周围。当我移动播放器时,我试图计算离播放器位置200像素的圆上的点,给定-360到360之间的正或负角度(度)。屏幕是1280x720,0,0是屏幕的中心点。玩家在整个笛卡尔坐标系中移动。我试图找到的点可以不在屏幕上。 我尝试了文章中用半径和角度找到点的公式,但我不相信我理解了什么是“角度”,因为当我把角度作为-360到360

  • 我有一个2F长度的柱面,和RotX和RotZ的数据,由用户给出。我也知道我的圆柱体的“底”在(0,0,0)(形成“底”的圆心) 我需要的是计算“顶”点(另一端的圆心),在上面的线条中暴露数据。 在我的第二幅图像中,A点计算如下(sin(zAngle),cos(zAngle),sin(xAngle),zAngle=pi/4(alpha角)和xAngle=0。 点B计算为(sin(xAngle),co

  • 我正在研究一个问题,基本上可以归结为以下几点: 给定: null 对于这样一个位置,有什么算法的想法吗?我最终将使用java实现,但我可以使用PsuedoCode。

  • 我确实看到了这个StackOverflow,它似乎是一个类似的问题:在一个圆形扇区中有效地找到点,我用Java实现了它,但如果没有向量,它似乎就不能翻译,我对数学有点困惑,不能让它工作。 我一直试图解决这个问题,我希望任何类型的实现的帮助(不要介意添加触发计算),以及任何理解问题的帮助。谢谢!!

  • 我怎样才能得到圆心和半径给定的圆的东北和西南坐标?我在任何地方都找不到任何解决办法。目前,Circle对象不像以前那样具有getLatLngBounds()和getBounds()方法。