Note that there are some explanatory texts on larger screens.

plurals
  1. PORotating a shape vertically around the x-axis
    text
    copied!<p>I have a 2d graph with an x and y axis and im trying to rotate a shape (series of points) around an axis. This rotation will need to include a scale function.</p> <pre><code>import java.awt.*; import java.awt.event.*; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import javax.swing.*; import java.lang.reflect.Array; public class test extends JPanel implements ActionListener { int[] p1x = {200, 200, 240, 240, 220, 220, 200}; int[] p1y = {200, 260, 260, 240, 240, 200, 200}; int[] p2x = {600, 600, 620, 620, 640, 640, 660, 660, 600}; int[] p2y = {400, 420, 420, 460, 460, 420, 420, 400, 400}; int[] p3x = {400, 400, 460, 460, 440, 440, 420, 420, 400}; int[] p3y = {400, 460, 460, 400, 400, 440, 440, 400, 400}; int delay = 1000; int dx = 0; int dy = 5; int steps = 121; Polygon t; Timer tim = new Timer(delay, this); public void actionPerformed(ActionEvent event) { for (int i = 0; i &lt; Array.getLength(p2x); i++) { //p2x[i] = (int) (p2x[i]*Math.cos(Math.toRadians(1))- p2y[i]*Math.sin(Math.toRadians(1))); //p2y[i] = (int) (p2x[i]*Math.sin(Math.toRadians(1))+ p2y[i]*Math.cos(Math.toRadians(1)));; Point2D original = new Point2D.Double(p2x[i], p2y[i]); AffineTransform at = new AffineTransform(); //at.setToRotation(.02, 250, 250); at.scale(1, -1); Point2D rotated = at.transform(original, null); p2x[i] = (int) rotated.getX(); p2y[i] = (int) rotated.getY(); } repaint(); if (--steps == 0) { tim.stop(); } } public void paintComponent(Graphics g) { super.paintComponent(g); this.setBackground(Color.white); g.drawLine(this.getWidth() / 2, 0, this.getWidth() / 2, this.getWidth()); g.drawLine(0, this.getHeight() / 2, this.getHeight(), this.getHeight() / 2); Polygon t = new Polygon(p2x, p2y, 9); g.drawPolygon(t); Letters u = new Letters(p3x, p3y, 9); u.draw(g); Letters l = new Letters(p1x, p1y, 7); l.draw(g); } public static void main(String[] args) { JFrame frame = new JFrame("Drawing line and a moving polygon"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test sl = new test(); frame.getContentPane().add(sl); frame.setSize(700, 700); frame.setVisible(true); sl.tim.start(); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload