【问题标题】:Drawing filled circle using trigonometry [duplicate]使用三角法绘制实心圆[重复]
【发布时间】:2015-10-26 01:49:00
【问题描述】:

我可以创建什么函数来使用基本绘图函数绘制一个实心圆:

  • putpixel(x, y);
  • lineto(x, y);

?


请注意,它必须使用三角函数(videlicet sincos 等。)这样我就可以轻松地将它变成六边形,甚至更进一步 - 正方形或其他类型的多边形。


最后,如果绘制速度不是很慢(我认为一个循环就足够了),不一定但总是很感激,甚至更不一定,但如果不是太复杂和/或包含比轻量级生活所需的更多行。

【问题讨论】:

  • 在谷歌搜索这样的功能没有成功。仅适用于非实心圆、特定于库或执行不当的函数导致奇怪的椭圆。
  • @MartinJames 不准确。后面的答案和认可的答案都不是三角函数。
  • 真的吗?我在 Google 上搜索“C 画一个实心圆”并得到:“大约 35,900,000 个结果”,在之前的几个 SO 问答中名列前茅。你谷歌是为了什么?
  • 与您所做的类似。如果你找到了 C,标准绘图函数,实心圆,使用三角函数,并且你可以证明我可以很容易地将它变形为相对原始的形状,你为什么不帮助我/我们提供参考。跨度>
  • 用 sin/cos 画一个圆,逐渐减小半径,冲洗,重复。

标签: c math drawing geometry trigonometry


【解决方案1】:

lineto画一个实心圆最快的方法如下

for each value of y that lies within the circle
{
    compute the corresponding x values
    draw a line between (x1,y) and (x2,y)
}

要将圆转换为多边形,您可以根据圆的半径和每个顶点的角度来计算多边形的顶点。例如,对于六边形,角度为 0、60、120、180、240 和 300 度。对于正方形,角度分别为 45、135、225 和 315。一旦有了多边形顶点,就可以根据顶点之间的直线方程计算每个 y 值的 x1x2 值.

【讨论】:

  • 如果它是伪代码对我来说很好,但是,如果你能展示我如何将它配置为非圆角使其开始看起来像六边形并衰减成正方形,那就太棒了,因为该方法似乎没有为其提供任何简单的配置,但在问题上已注明。
  • 当然,绘制多边形的轨迹相当容易,因为没有。边和.. err.. 还有什么要说它有多大:)
  • 我在几何学和三角学方面不是很好:(这个概念对我来说比较清楚,但是方法..
  • @Malina 不确定您最后的评论是针对 MartinJames 的评论还是我的编辑?
  • @Malina 这个代码只是一堆基于一些中等数学的吹毛求疵的细节。熟悉数学是第一步。具体来说,您需要能够根据中心、半径和角度计算点。并且您需要能够根据两点确定直线的方程。其余的留给读者练习。
猜你喜欢
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
相关资源
最近更新 更多