Rotação de um triangulo

8 respostas
Tiago_Held

Como Rotacionar um trinagulo feito atraves de 3 retas?

8 Respostas

maquiavelbona

Como você faria matematicamente num plano cartesiano? Então, passe de matematiquês para computês.

Até!

ViniGodoy

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.

Tiago_Held
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 ?

Tiago_Held

Queria saber como rotaciona os vetores que criei.

dyorgio

faça como o vitor falou,
ache o centro do triangulo, ou defina um :stuck_out_tongue:
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,

ViniGodoy

Que vitor?

Talvez esse artigo possa te ajudar:
http://www.programadoresdejogos.com/forum/viewtopic.php?p=58495#58495

dyorgio

A vitor…
Vini e vitor é quase a mesma coisa
haehhaehaehhaeae
foi mal cara
FAÇA como O VINI falou!

Tiago_Held

Li o artigo mais ainda continuo com a duvida de como fazer o vetor pra rotacionar o triangulo.

Criado 4 de julho de 2008
Ultima resposta 10 de jul. de 2008
Respostas 8
Participantes 4