gpt4 book ai didi

java - 如何在Java中绘制绝对自定义的形状?

转载 作者:行者123 更新时间:2023-12-03 03:31:04 27 4
gpt4 key购买 nike

Java2D API 支持的最复杂的形状是贝塞尔线段。假设我要绘制有理线段(每个控制点都有权重,整个渲染公式略有不同)。

如何实现这一目标?

是否可以扩展渲染引擎以绘制更复杂的形状?

更新

实现自定义形状的常用方法是实现 Shape界面。该接口(interface)有关键方法返回PathIteratorPathIterator 则迭代段类型。只有 5 种段类型。其中最弯曲的是SEG_CUBICTO这是标准贝塞尔曲线,有 4 个控制点(其中 2 个控制点为起点和终点)。

如果我将线性分数变换应用于贝塞尔曲线,每个控制点都会获得一个权重,作为其坐标的补充,并且贝塞尔曲线将转向 NURBS(对此不确定,未能学习准确的术语)。无论如何,曲线的公式与贝塞尔曲线不同。

最佳答案

您无法真正扩展渲染引擎:您可以创建 Graphics/Graphics2D 子类,但您无法控制实例化,因此您无法强制绘图框架将您的子类传递给绘画方法。

您可以做的是创建 Shape 的 RationalShape 实现,它具有绘制您喜欢的任何内容的方法,并返回一个使用贝塞尔样条线近似的 PathIterator。作为 Photoshop 等图形程序的用户,我发现每条曲线都可以用贝塞尔样条曲线很好地逼近,我不知道这种逼近背后的数学有多复杂。

关于java - 如何在Java中绘制绝对自定义的形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20050086/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com