我只是想知道如何以有效的方式绘制像 X^2+2*X^4+... 这样的多项式并使它看起来像一个真实的多项式。我的意思是权力是剧本等等。
问问题
1940 次
4 回答
4
如果您有一个具有良好 Unicode 字体的环境,您可以相对轻松地创建自己的 polynomial toString()
。Unicode 将所有阿拉伯数字定义为上标,其中大部分位于上标和下标块中:
x⁰: U+2070
x¹: U+00B9 // Not in U207x range!
x²: U+00B2 // Not in U207x range!
x³: U+00B3 // Not in U207x range!
x⁴: U+2074
x⁵: U+2075
x⁶: U+2076
x⁷: U+2077
x⁸: U+2078
x⁹: U+2079
x⁻: U+207B
因此,可以通过打印构造 x⁻⁴² (x^-42) U+0078 U+207B U+2074 U+00B2
。
请注意,您用于打印的字体必须定义这些字符。
于 2011-04-14T10:58:22.910 回答
2
Unicode 方法具有相当大的吸引力,但它需要字体支持。作为替代方案,请考虑如何在 Swing 组件中使用 HTML,例如
new JLabel("<html><i>x</i><sup>2</sup> + <i>x</i><sup>4</sup></html>")
于 2011-04-14T13:01:54.093 回答
1
好的,为了帮助您入门,以下是您需要在较高级别上执行的操作:
- 扩展一个 JPanel。这个新类(假设 PolynominalPanel 扩展了 JPanel)将绘制您的多项式。
- 覆盖paintComponent(Graphics g) 方法
- 使用“Graphics”参数设置您选择的线条(转换为 Graphics2D 并使用 setStroke())。
- 定义一个新类,将 X 和 Y 值转换为 JPanel 坐标中的值。这允许您以统一的方式平移、镜像、旋转......等等。(因此,对于多项式中的每个 X 和 Y,使用您选择的公式对其进行转换,以便在 JPanel 的边界内绘制多项式)。这里的重点是您要将多项式的一部分映射到PolynominalPanel 的边界。这是您感兴趣的多项式的一部分。这取决于多项式。
- 以离散方式对多项式进行采样。例如,您可以对每个 X 像素进行采样,或者您可以以较低的速率对其进行采样以获得更好的性能。(虽然每个像素应该没问题)
- 使用 Graphics.drawLine() 方法绘制线条。您应该使用之前采样的转换值。
瞧,你完成了!
希望这可以帮助!
于 2011-04-14T10:18:06.500 回答
0
什么意思:画公式还是画图。看来你想要前者。你可以看看 LaTex。
于 2011-04-14T10:12:01.927 回答