Win a copy of Functional Reactive Programming this week in the Other Languages forum!

# i want to draw an equilateral sierpinski triangle.

Praise Onwuachu
Greenhorn
Posts: 2
i want my triangle to be equivalent and not isoceles. i need help with this code.

[code]
import java.awt.*;
import javax.swing.*;

public class Triangle

{

/**make a new Triangle*/

public Triangle()

{
Frame f = new Frame(" MCS GroupX CHAOS GAME ");
f.setBackground(Color.pink);

f.pack();

f.setVisible(true);

}

public static void main(String[] args){

//make a new frame

new Triangle();

}

}

// Point class holds a 2 dimentional integer point.

class Point {

//two portions of the point

int x,y;

//default constructor does nothing

public Point(){}

//constructor that takes two arguments

public Point(int nx,int ny){

x=nx;

y=ny;

}

}

//class that computes and displays the Triangle

class STPane extends JComponent {

//holds the initial triangle

Point[] triangle = new Point[3];

//first point

Point fp;

//current point

Point cp=new Point();

//default constructor simply sets the original size

public STPane(){

this.setPreferredSize(new Dimension(500,500));

}

//simple method to ge a 0-2 range random number to select a new point

public int rand0to2(){

return (int)(Math.random() * 3);

}

//paint the points of the chaos

public void paint(Graphics g){
g.setColor(Color.black);

//get the current size of the component

Dimension d = super.getSize();

//make triangle from the size of the

//component for the original points

triangle[0] = new Point((int)d.getWidth()/2,0);

triangle[1] = new Point(0,(int)d.getHeight());

triangle[2] = new Point((int)d.getWidth(),(int)d.getHeight());

//get an arbitrary point in the middle of the screen somewhere

fp=new Point((int)(Math.random()*d.getWidth()),(int)(Math.random()*d.getHeight()/2));

//get a random triangle point

Point p = triangle[rand0to2()];

//get the first current point by going half way from the first

//point to the chosen triangle point

cp.x=(p.x+fp.x)/2;

cp.y=(p.y+fp.y)/2;

//draw the first point

g.drawRect(cp.x,cp.y,0,0);

}

}

}
[\code]

Bear Bibeault
Author and ninkuma
Marshal
Posts: 65228
95

Rob Spoor
Sheriff
Posts: 20669
65
Also, please Use Code Tags in the future. Although that won't make any difference if you don't indent your code at all...

Praise Onwuachu
Greenhorn
Posts: 2
am doing that now.
thanks.

pete stein
Bartender
Posts: 1561
1) You really don't want to place a JComponent on a Frame, trust me. Put it in a JFrame.
2) To set the triangle as equilateral, calculate the height vs base of an equilateral triangle (any basic geometry text will tell you, something about sqrt(3)/2), and use these numbers to set your preferred size of the jcomponent.

Maneesh Godbole
Saloon Keeper
Posts: 11196
15
Praise Onwuachu wrote:am doing that now.
thanks.

Nope.
Still not good.