Como Rotacionar um trinagulo feito atraves de 3 retas?
Rotação de um triangulo
8 Respostas
Como você faria matematicamente num plano cartesiano? Então, passe de matematiquês para computês.
Até!
Há duas formas.
Você pode rodar o triângulo, ou girar o papel.
Se você for rodar o triângulo, seria bom traçar 3 vetores, a partir do centro do triângulo, e então rotaciona-los.
Se você for “rodar o papel”, use o comando setTransform no objeto Graphics, para trocar a matriz de transformação. Então, todo plano do Java2D será rotacionado.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Line2D;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Desenho extends JFrame implements MouseListener{
private JPanel p1,p2;
private JButton b1,b2,b3;
int x,y,p=0,xf,yf,x1,y1,xf1,yf1,j,i,bt=0;
double dxf1,dyf1;
double dx,dy,dxf,dyf;
int vx[]=new int[10];
int vy[]=new int[10];
public Desenho()
{
super("Tela principal");
Container c=getContentPane();
p1=new JPanel();
b1=new JButton("->");
p1.add(b1);
b1.setBounds(50, 100, 80, 50);
b2=new JButton("<-");
p1.add(b2);
b2.setBounds(50, 200, 80, 50);
b3=new JButton("Rotação");
p1.add(b3);
add(p1,BorderLayout.WEST);
b3.setBounds(50, 300, 100, 50);
p1.setBackground(Color.green);
c.addMouseListener(this);
Acao a=new Acao();
b1.addActionListener(a);
b3.addActionListener(a);
}
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
x=arg0.getX();
y=arg0.getY();
vx[p]=x;
vy[p]=y;
p++;
if(p>1)
{
x=vx[0];
y=vy[0];
xf=vx[1];
yf=vy[1];
repaint();
}
if(p==3)
{
x1=vx[1];
y1=vy[1] ;
xf1=vx[2];
yf1=vy[2] ;
x=vx[0];
y=vy[0];
xf=vx[2];
yf=vy[2];
repaint();
}
if(p>3)
{
x=vx[0];
JOptionPane.showMessageDialog(null, "Teste"+x);
}
}
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
if (p>1)
{
Line2D l = new Line2D.Double(x,y,xf,yf);
g2.draw(l);
}
if(p==3)
{
Line2D l1=new Line2D.Double(x1,y1,xf1,yf1);
Line2D l2=new Line2D.Double(x,y,xf1,yf1);
g2.draw(l1);
}
if(bt==1)
{
//JOptionPane.showMessageDialog(null,"teste"+dx+" "+dy+" "+dxf+" "+dyf);
Line2D l3=new Line2D.Double(dx,dy,dxf,dyf);
Line2D l4=new Line2D.Double(dx,dy,dxf1,dyf1);
Line2D l5=new Line2D.Double(dxf1,dyf1,dxf,dyf);
g2.draw(l4);
//g2.draw(l4);
//g2.draw(l5);
}
}
class Acao implements ActionListener
{
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
//JOptionPane.showMessageDialog(null,"Teste"+" "+x+" "+y+" "+xf+" "+yf);
dx=x*Math.acos(Math.toRadians(90))-y*Math.asin(Math.toRadians(90));
dy=y*Math.acos(Math.toRadians(90))+x*Math.asin(Math.toRadians(90));
dxf=xf*Math.acos(Math.toRadians(90))-yf*Math.asin(Math.toRadians(90));
dyf=yf*Math.acos(Math.toRadians(90))+xf*Math.asin(Math.toRadians(90));
dxf1=xf1*Math.acos(Math.toRadians(90))-yf1*Math.asin(Math.toRadians(90));
dyf1=yf1*Math.acos(Math.toRadians(90))+xf1*Math.asin(Math.toRadians(90));
bt++;
//JOptionPane.showMessageDialog(null,"teste"+dx+" "+dy+" "+dxf+" "+dyf);
repaint();
}
}
public static void main(String args[])
{
Desenho d=new Desenho();
d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
d.setSize(200, 400);
d.setVisible(true);
}
}
Como passar para vetor ?
Queria saber como rotaciona os vetores que criei.
faça como o vitor falou,
ache o centro do triangulo, ou defina um 
depois use o seu paint g.rotate(xcentro,ycentro),
antes de pintar o triangulo…
para retornar a rotação a posição original use
g.rotate(-xcentro,-ycentro).
Abs,
Que vitor?
Talvez esse artigo possa te ajudar:
http://www.programadoresdejogos.com/forum/viewtopic.php?p=58495#58495
A vitor…
Vini e vitor é quase a mesma coisa
haehhaehaehhaeae
foi mal cara
FAÇA como O VINI falou!
Li o artigo mais ainda continuo com a duvida de como fazer o vetor pra rotacionar o triangulo.