Java - 绘制多项式

发布于 2024-11-01 10:01:29 字数 69 浏览 4 评论 0原文

我只是想知道如何画出像 X^2+2*X^4+ 这样的多项式... 以有效的方式使其看起来像真的。我的意思是权力是脚本等等。

I'm just wondering how can I draw a polynomial like that X^2+2*X^4+...
in efficient way and make it look like a real one. I mean powers is up-script and so.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

被你宠の有点坏 2024-11-08 10:01:29

如果您的环境具有良好的 Unicode 字体,您可以相对轻松地创建自己的多项式 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

请注意,用于打印的字体必须定义这些字符。

If you have an environment with a good Unicode font, you could relatively easily create your own polynomial toString(). Unicode has all Arabic numerals defined as superscript, most of them in the Superscripts and Subscripts block:

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

Thus, constructing x⁻⁴² (x^-42) would be possible by printing U+0078 U+207B U+2074 U+00B2.

Notice that the font you use to print this must have these characters defined.

笨笨の傻瓜 2024-11-08 10:01:29

Unicode 方法具有相当大的吸引力,但它需要字体支持。作为替代方案,请考虑如何在 Swing 组件中使用 HTML< /em>,例如

new JLabel("<html><i>x</i><sup>2</sup> + <i>x</i><sup>4</sup></html>")

Polynomial.png

The Unicode approach has considerable appeal, but it requires font support. As an alternative, consider How to Use HTML in Swing Components, e.g.

new JLabel("<html><i>x</i><sup>2</sup> + <i>x</i><sup>4</sup></html>")

Polynomial.png

相守太难 2024-11-08 10:01:29

好的,为了帮助您开始,您需要在高级别上执行以下操作:

  • 扩展 JPanel。这个新类(假设 PolynominalPanel 扩展了 JPanel)将绘制您的多项式。
  • 重写paintComponent(Graphics g)方法
  • 使用“Graphics”参数设置您选择的线条(转换为Graphics2D并使用setStroke())。
  • 定义一个新类,将 X 和 Y 值转换为 JPanel 坐标中的值。这允许您以统一的方式平移、镜像、旋转...等所有点。 (因此,对于多项式中的每个 X 和 Y,用您选择的公式对其进行转换,以便在 JPanel 的边界内绘制多项式)。这里的要点是,您希望将多项式的一部分映射到PolynominalPanel 的边界。这是您感兴趣的多项式的部分。这取决于多项式。
  • 以离散方式对多项式进行采样。例如,您可以对每个 X 像素进行采样,或者您可以以较低的速率进行采样以获得更好的性能。 (虽然每个像素应该没问题)
  • 使用 Graphics.drawLine() 方法来绘制线条。您应该使用之前采样的转换值。

瞧,你完成了!

希望这有帮助!

Ok, to help you get started, here's what you need to do on a high level:

  • Extend a JPanel. This new class (lets say PolynominalPanel extends JPanel) will draw your polynominal.
  • Override the paintComponent(Graphics g) method
  • Use the "Graphics" argument to set the linestroke of your choice (cast to Graphics2D and use setStroke()).
  • Define a new class that transforms X and Y values to values in your JPanel coordinates. This allows you to translate, mirror, rotate ... etc.. all your points in a uniform way. (So for each X and Y in your polynominal, transform this with a formula of your choosing, so that the polynominal is drawn in the bounds of the JPanel).The point here is that you want to map a part of your polynominal to the bounds of your PolynominalPanel. This is the part of the polynominal you are interested in. This depends on the polynominal.
  • Sample your polynominal in a discrete way. For instance, you could sample it for each X pixel, or possibly you could sample it at a lower rate for better performance. (Though per pixel should be fine)
  • Use the Graphics.drawLine() method to draw lines. You should use the transformed values that you have sampled before.

And voila, you're done!

Hope this helps!

愿得七秒忆 2024-11-08 10:01:29

你的意思是:画公式还是画图表。看来你想要前者。你可以看看LaTex。

What do you mean: drawing the formula or drawing the graph. It seems you want the former. You could have a look at LaTex.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文