java – libgdx绘制弧形曲线
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – libgdx绘制弧形曲线,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1819字,纯文字阅读大概需要3分钟。
内容图文
![java – libgdx绘制弧形曲线](/upload/InfoBanner/zyjiaocheng/704/cde80759a73d42e3b8f8d83b0b45e092.jpg)
libgdx的弧函数而不是绘制弧形绘制一个饼图段(即有2条线连接到弧的原点)
shapeRenderer.begin(ShapeType.Line);
shapeRenderer.arc(x, y, radius, 30, 120);
shapeRenderer.end();
是否有解决此问题的方法,以便libgdx可以绘制类似于html5画布弧函数的弧形曲线?
解决方法:
阅读源代码,这似乎是内置行为:
/** Draws an arc using {@link ShapeType#Line} or {@link ShapeType#Filled}. */
public void arc (float x, float y, float radius, float start, float degrees, int segments) {
if (segments <= 0) throw new IllegalArgumentException("segments must be > 0.");
float colorBits = color.toFloatBits();
float theta = (2 * MathUtils.PI * (degrees / 360.0f)) / segments;
float cos = MathUtils.cos(theta);
float sin = MathUtils.sin(theta);
float cx = radius * MathUtils.cos(start * MathUtils.degreesToRadians);
float cy = radius * MathUtils.sin(start * MathUtils.degreesToRadians);
if (shapeType == ShapeType.Line) {
check(ShapeType.Line, ShapeType.Filled, segments * 2 + 2);
renderer.color(colorBits);
renderer.vertex(x, y, 0); <--- CENTER
renderer.color(colorBits);
renderer.vertex(x + cx, y + cy, 0); <--- LINE TO START POINT
for (int i = 0; i < segments; i++) {
renderer.color(colorBits);
renderer.vertex(x + cx, y + cy, 0);
float temp = cx;
cx = cos * cx - sin * cy;
cy = sin * temp + cos * cy;
renderer.color(colorBits);
renderer.vertex(x + cx, y + cy, 0);
}
renderer.color(colorBits);
renderer.vertex(x + cx, y + cy, 0); <-- LINE TO END POINT
...
最简单的可能是复制整个函数,至少抛出我标记的两条线:CENTER和LINE TO END POINT,以及随附的renderer.color(..每条线上面的线.
(您也可以删除LINE TO START POINT – 它似乎设置了曲线的起点,但实际上也是在循环内完成的,因此它是多余的.)
该函数有一个填充“弧”的第二部分(我同意,它应该被恰当地命名为“饼”或“楔形”),但你不需要它,因为它会完全相同.
如果你让它工作,你可以把它提交给libgdx的维护者,例如在libgdx’s Contributions Forum.
内容总结
以上是互联网集市为您收集整理的java – libgdx绘制弧形曲线全部内容,希望文章能够帮你解决java – libgdx绘制弧形曲线所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。