3

我只是想知道如何以有效的方式绘制像 X^2+2*X^4+... 这样的多项式并使它看起来像一个真实的多项式。我的意思是权力是剧本等等。

4

4 回答 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>")

多项式.png

于 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 回答