Pythagoras Theorem Triplets
What is the formula for finding Pythagorean integer triples?
For ex: 3 4 5 is a triplet. How do I find the next triplet?
Check out http://mathworld.wolfram.com/PythagoreanTriple.html, and then think about whether this is the right place to answer this question....
Similar Messages
-
Need help to develop Pythagoras theorem-
Hi i need help to develop proofs 2,3,4
of pythagoras theorems in java as demonstrations
These are applets can anyone help me with it or give me an idea of how to go about developing it -
the site is the following
http://www.uni-koeln.de/ew-fak/Mathe/Projekte/VisuPro/pythagoras/pythagoras.html
then double click on the screen to make it startPardon my ASCII art, but I've always liked the following, simple, geometric proof:
a b
---------------------------------------+
| | |
a| I | II |
| | |
---------------------------------------+
| | |
| | |
| | |
| | |
| | |
b| IV | III |
| | |
| | |
| | |
| | |
| | |
| | |
---------------------------------------+It almost goes without saying that I+II+III+IV == (a+b)^2, and II == IV == a*b,
I == a*a and III == b*b, showing that (a+b)^2 == a^2+a*b+a*b+b^2.
I hope the following sketch makes sense, stand back, ASCII art alert again: a b
---------------------------------------+
| . VI |
| . . |a
| V . |
| +
| |
| . |
b| . |
| |
| IX |
| . |
| . |b
| |
+ |
| . |
a| . . VII |
| VIII . |
---------------------------------------+
a bThe total area equals (a+b)^2 again and equals the sum of the smaller areas:
(a+b)^2 == V+VI+VII+VIII+IX. Let area IX be c^2 for whatever c may be.
V+VII == VI+VIII == a*b, so a^2+b^2+2*ab= c^2+2*a*b; IOW a^2+b^2 == c^2
Given this fundamental result, the others can easily be derived from this one,
or did I answer a question you didn't ask?
kind regards,
Jos -
I need to know if anyone has coded the pythagoras theorem using areas of squares to prove the theorem.
I have got a triangle on screen with my angles and side lengths displayed in a jtable. I need to extend it to display the sides as squares.
such that the ares of the side and the base = area of the square from the hypotenuse..
PLEASE REPLY SOONsuch that the ares of the side and the base = area of
the square from the hypotenuse..You only have to display the square of the three sides. Pythagoras will personally take care of the theorem for you from his small study in Math Heaven. -
PYTHAGORAS THEOREM __ URGENT HELP NEEDED
Hi everyone - I am developing various proofs of the pythagora's theorem
and the following code draws a triangle on screen and the proof follows -
but i need to know how to drag the triangle such tht 1 angle is always set to 90 degrees.
i.e. i need to resize the triangle by dragging its vertex points by which the1 angle remains at 90 no matter what the size.
The proof has got some graphics code hardcoded in it - i.e. LINES AND POLYGONS have been hardcoded
i need to reconfigure that such that everytime the user increases the size of the triagnle and clicks on next it draws the lines and polygons in the correct area and place
PLEASE HELP
the code is as follows
MAIN CLASS
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
public class TestProof {
TestControl control; // the controls for the visual proof
TestView view; // the drawing area to display proof
// called upon class creation
public TestProof() {
view = new TestView();
view.setBackground(Color.WHITE);
control = new TestControl(view);
Frame f = new Frame("Pythagoras");
f.add(view,"Center");
f.add(control,"South");
f.setSize(600,600);
f.setBackground(Color.lightGray);
f.addMouseMotionListener(
new MouseMotionListener() { //anonymous inner class
//handle mouse drag event
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse " + e.getX() +"," + e.getY());
public void mouseDragged(MouseEvent e) {
System.out.println("Draggg: x=" + e.getX() + "; y=" + e.getY());
JMenu File = new JMenu("File");
JMenuItem Exit = new JMenuItem("Exit");
Exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExitActionPerformed(evt);
JMenuBar menuBar = new JMenuBar();
menuBar.add(File);
File.add(Exit);
f.add(menuBar,"North");
f.show();
private JMenuBar getMenuBar() {
JMenu File = new JMenu("File");
JMenuItem Exit = new JMenuItem("Exit");
Exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExitActionPerformed(evt);
JMenuBar menuBar = new JMenuBar();
menuBar.add(File);
File.add(Exit);
return menuBar;
private void ExitActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
// for standalone use
public static void main(String args[]) {
TestProof TP = new TestProof();
}Test VIEW
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.text.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestView extends Canvas {
int TRANSLUCENT = 1;
int sequence; // sequencer that determines what should be drawn
// notes matter
int noteX = 100; // note coordinates
int noteY = 60;
int fontSize = 11; // font size
int lineSpacing // space between two consecutive lines
= fontSize + 2;
Font noteFaceFont; // font used to display notes
// objects matter
Polygon tri; // right-angled triangle with sides A, B, and C
Polygon tri1;
Polygon sqrA; // square with side of length A
Polygon sqrB; // square with side of length B
Polygon sqrC; // square with side of length C
Polygon parA; // parallelogram of base A and height A
Polygon parB; // parallelogram of base B and height B
Polygon poly1;
Polygon poly2;
Polygon poly3;
Polygon poly4;
Polygon poly5;
Polygon poly6;
int X0 = 350; // coordinates of triangle
int Y0 = 350;
int A = 90;//60; // triangle size
int B = 120;//80;
int C = 150;//100;
//CORDS of 2nd triangle
int X1 = 350;
int Y1 = 500;
// notes: three lines per note
String notes[] = {
// note 0
// note 1
// note 2
// note 3
// note 4
// note 5
// note 6
// note 7
// note 8
// note 9
// note 10
// note 11
// note 12
// note 13
// note 14
// constructor
public TestView() {
addMouseMotionListener(
new MouseMotionListener() { //anonymous inner class
//handle mouse drag event
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse " + e.getX() +"," + e.getY());
public void mouseDragged(MouseEvent e) {
System.out.println("Draggg: x=" + e.getX() + "; y=" + e.getY());
// set font
noteFaceFont = new Font("TimesRoman", Font.PLAIN, fontSize);
// (coordinates specified w.r.t. to P0, unless otherwise specified)
// create the triangle
tri = new Polygon();
tri.addPoint(0, 0); // add P0 coordinate
tri.addPoint(A*A/C, -A*B/C); // add A3 coordinate
tri.addPoint(C, 0); // add C1 coordinate
tri.translate(X0, Y0); // place triangle
tri1 = new Polygon();
tri1.addPoint(0,0); // add P0 coordinate
tri1.addPoint(A*A/C +38, +A*B/C); // add A3 coordinate
tri1.addPoint(C, 0); // add C1 coordinate
tri1.translate(X1, Y1);
// create square of side A
sqrA = new Polygon();
sqrA.addPoint(0, 0); // add P0 coordinate
sqrA.addPoint(-A*B/C, -A*A/C); // add A1 coordinate
sqrA.addPoint(-A*(B-A)/C, -A*(A+B)/C); // add A2 coordinate
sqrA.addPoint(A*A/C, -A*B/C); // add A3 coordinate
sqrA.translate(X0, Y0); // place square
// create square of side B
// warning: the coordinate of this object are specified relative to C1
sqrB = new Polygon();
sqrB.addPoint(0, 0); // add C1 coordinate
sqrB.addPoint(B*A/C, -B*B/C); // add B1 coordinate
sqrB.addPoint(B*(A-B)/C, -B*(A+B)/C); // add B2 coordinate
sqrB.addPoint(-B*B/C, -B*A/C); // add A3 coordinate
sqrB.translate(X0 + C, Y0); // place square
// create square of side C
sqrC = new Polygon();
sqrC.addPoint(0, 0); // add P0 coordinate
sqrC.addPoint(C, 0); // add C1 coordinate
sqrC.addPoint(C, C); // add C2 coordinate
sqrC.addPoint(0, C); // add C3 coordinate
sqrC.translate(X0, Y0); // place square
poly1 = new Polygon();
poly1.addPoint(405,279);
poly1.addPoint(413,350);
poly1.addPoint(432,500);
poly1.addPoint(442,571);
poly1.addPoint(500,500);
poly1.addPoint(500,350);
poly2 = new Polygon();
poly2.addPoint(279,297);
poly2.addPoint(404,280);
poly2.addPoint(571,254);
poly2.addPoint(500,350);
poly2.addPoint(350,350);
//Polygon 3
poly3 = new Polygon();
poly3.addPoint(404,280);
poly3.addPoint(350,350);
poly3.addPoint(414,350);
poly4 = new Polygon();
poly4.addPoint(350,350);
poly4.addPoint(350,500);
poly4.addPoint(442,572);
poly4.addPoint(433,500);
poly4.addPoint(414,350);
poly5 = new Polygon();
poly5.addPoint(476,183);
poly5.addPoint(332,225);
poly5.addPoint(278,295);
poly5.addPoint(404,279);
poly5.addPoint(571,254);
poly6= new Polygon();
poly6.addPoint(405,278);
poly6.addPoint(332,224);
poly6.addPoint(476,182);
// create parallelogram of height A
parA = new Polygon();
parA.addPoint(0, 0); // add P0 coordinate
parA.addPoint(0, C); // add C3 coordinate
parA.addPoint(A*A/C, C - A*B/C); // add Q0 coordinate
parA.addPoint(A*A/C, -A*B/C); // add A3 coordinate
parA.translate(X0,Y0); // place parallelogram
// create parallelogram of height B
// warning: the coordinate of this object are specified from C1
parB = new Polygon();
parB.addPoint(0, 0); // add C1 coordinate
parB.addPoint(-B*B/C, -B*A/C); // add A3 coordinate
parB.addPoint(A*A/C - C, C - A*B/C); // add Q0 coordinate
parB.addPoint(0, C); // add C2 coordinate
parB.translate(X0 + C, Y0);
// place parallelogram
// depending on the sequence number we draw certain objects
public void paint(Graphics gfx) {
super.paint(gfx);
Graphics2D g = (Graphics2D) gfx;
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// text first, then objects (and animation)
// we always output some notes
g.drawString(notes[3*sequence], noteX, noteY);
g.drawString(notes[3*sequence + 1], noteX, noteY + lineSpacing);
g.drawString(notes[3*sequence + 2], noteX, noteY + 2*lineSpacing);
// the object are drawn in an order so that they are properly overlapped
if(sequence == 13) {
g.setColor(Color.green);
g.fillPolygon(poly1);
g.fillPolygon(poly2);
g.fillPolygon(poly3);
g.fillPolygon(poly4);
g.fillPolygon(poly5);
g.setColor(Color.RED);
g.setColor(Color.GREEN);
g.drawLine(413,351,433,499);
g.setColor(Color.white);
g.fillPolygon(tri);
g.fillPolygon(tri1);
g.fillPolygon(poly6);
if(sequence == 12 ) {
g.setColor(Color.green);
g.fillPolygon(poly1);
g.fillPolygon(poly2);
g.fillPolygon(poly3);
g.fillPolygon(poly4);
g.fillPolygon(poly5);
g.setColor(Color.BLACK);
if(sequence == 11){
g.setColor(Color.green);
g.fillPolygon(poly1);
g.fillPolygon(poly3);
g.fillPolygon(poly4);
g.setColor(Color.BLACK);
if(sequence == 8 ){
g.setColor(Color.green);
g.fillPolygon(poly5);
g.setColor(Color.MAGENTA);
g.drawString("E",578,254);
g.drawString("D",268,302);
g.setColor(Color.black);
g.drawArc(250,150,350,250,320,65);
else if (sequence == 9 ){
g.setColor(Color.green);
g.fillPolygon(poly2);
g.setColor(Color.MAGENTA);
g.drawString("E",578,254);
g.drawString("D",268,302);
g.setColor(Color.black);
g.drawArc(250,150,350,250,320,65);
if( sequence == 10){
g.setColor(Color.green);
g.fillPolygon(poly2);
g.fillPolygon(poly5);
g.setColor(Color.black);
g.setColor(Color.MAGENTA);
g.drawString("E",578,254);
g.drawString("D",268,302);
g.setColor(Color.black);
g.drawArc(250,150,350,250,320,65);
if(sequence == 7){
g.setColor(Color.green);
g.fillPolygon(poly2);
g.setColor(Color.MAGENTA);
g.drawString("E",578,254);
g.drawString("D",268,302);
g.setColor(Color.black);
if(sequence == 6){
g.setColor(Color.yellow);
g.fillPolygon(poly2);
g.setColor(Color.green);
g.fillPolygon(poly3);
g.setColor(Color.blue);
g.fillPolygon(poly4);
g.setColor(Color.black);
g.drawArc(250,175,350,275,300,65);
//g.drawArc(250,150,350,250,320,65);
g.drawLine( 606,309,599,299);
g.drawLine(592,313, 599,299);
g.drawString("+90 degrees",605,378);
if (sequence == 5 ) {
g.setColor(Color.yellow);
g.fillPolygon(poly2);
g.setColor(Color.black);
if (sequence == 4) {
g.setColor(Color.YELLOW);
g.fillPolygon(poly1);
g.setColor(Color.black);
g.drawArc(319,310,250,195,89,-35);
g.drawLine(499,319, 492,312);
g.drawLine(499,319, 492,325);
g.drawArc(200,180, 233,238,-120,-60);
g.drawLine(200,298, 208,309);
g.drawLine(200,298, 194,313);
g.drawString("-90 degrees",227,347);
if (sequence >= 3) {
g.drawLine(404,279,442,572);
// draw the squares
if (sequence >= 2) {
g.drawLine(278,296,572,254);
// draw the squares
if (sequence >= 1) {
g.drawLine(333,224,476,182);
g.drawPolygon(tri1);
// always draw the triangle
g.drawPolygon(tri);
g.drawPolygon(sqrA);
g.drawPolygon(sqrB);
g.drawPolygon(sqrC);
g.setColor(Color.MAGENTA);
g.drawString("C", X0 + C/2 - fontSize/2, Y0 + lineSpacing);
g.drawString("A",
X0 + A*A/(2*C) - fontSize*A/B/2,
Y0 - A*B/(2*C) - lineSpacing*A/B);
g.drawString("B",
X0 + C - B*B/(2*C) - fontSize*A/B/2,// the last "-" isn't log.
Y0 - B*A/(2*C) - lineSpacing*A/B);
public void redraw(int sequence) {
this.sequence = sequence;
repaint();
}TEST CONTROL
* TestControl.java
* Created on 28 February 2005, 11:16
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.JFrame;
* @author Kripa Bhojwani
public class TestControl extends Panel implements ActionListener {
TestView view;
int sequence; // event sequence
// constructor
public TestControl(TestView view) {
Button b = null;
Label label = new Label("A^2 ");
this.view = view; // initialize drawble area
sequence = 0; // initialize sequence
b = new Button("Prev");
b.addActionListener(this);
add(b);
b = new Button("Next");
b.addActionListener(this);
add(b);
add(label);
// exported method
public void actionPerformed(ActionEvent ev) {
String label = ev.getActionCommand();
if (label.equals("Prev")) {
if (sequence >0) {
--sequence;
else {
if (sequence < 15) {
++sequence;
this.setEnabled(false); // disable the controls
view.redraw(sequence);
this.setEnabled(true); // enable the controls
}Please help --- really need to sort this out...
THANKSCan any one help me with this --
basically need to draw a triangle with BC as the Base and the HYPOTENUSE of a right angle triangle right angled at A...
[ code]
A
B/-----------------------------/C
So angle A should be 90 degrees
and the user should be able to Drag sides B and C anywhere on screen
PLEASE HELP -
PYTHAGORAS THEOREM ) HELP NEEDED
Hi everyone - I am developing various proofs of the pythagora's theorem
and the following code draws a triangle on screen and the proof follows -
but i need to know how to drag the triangle such tht 1 angle is always set to 90 degrees.
i.e. i need to resize the triangle by dragging its vertex points by which the1 angle remains at 90 no matter what the size.
The proof has got some graphics code hardcoded in it - i.e. LINES AND POLYGONS have been hardcoded
i need to reconfigure that such that everytime the user increases the size of the triagnle and clicks on next it draws the lines and polygons in the correct area and place
PLEASE HELP
the code is as follows
MAIN CLASS
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
public class TestProof {
TestControl control; // the controls for the visual proof
TestView view; // the drawing area to display proof
// called upon class creation
public TestProof() {
view = new TestView();
view.setBackground(Color.WHITE);
control = new TestControl(view);
Frame f = new Frame("Pythagoras");
f.add(view,"Center");
f.add(control,"South");
f.setSize(600,600);
f.setBackground(Color.lightGray);
f.addMouseMotionListener(
new MouseMotionListener() { //anonymous inner class
//handle mouse drag event
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse " + e.getX() +"," + e.getY());
public void mouseDragged(MouseEvent e) {
System.out.println("Draggg: x=" + e.getX() + "; y=" + e.getY());
JMenu File = new JMenu("File");
JMenuItem Exit = new JMenuItem("Exit");
Exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExitActionPerformed(evt);
JMenuBar menuBar = new JMenuBar();
menuBar.add(File);
File.add(Exit);
f.add(menuBar,"North");
f.show();
private JMenuBar getMenuBar() {
JMenu File = new JMenu("File");
JMenuItem Exit = new JMenuItem("Exit");
Exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExitActionPerformed(evt);
JMenuBar menuBar = new JMenuBar();
menuBar.add(File);
File.add(Exit);
return menuBar;
private void ExitActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
// for standalone use
public static void main(String args[]) {
TestProof TP = new TestProof();
}Test VIEW
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.text.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestView extends Canvas {
int TRANSLUCENT = 1;
int sequence; // sequencer that determines what should be drawn
// notes matter
int noteX = 100; // note coordinates
int noteY = 60;
int fontSize = 11; // font size
int lineSpacing // space between two consecutive lines
= fontSize + 2;
Font noteFaceFont; // font used to display notes
// objects matter
Polygon tri; // right-angled triangle with sides A, B, and C
Polygon tri1;
Polygon sqrA; // square with side of length A
Polygon sqrB; // square with side of length B
Polygon sqrC; // square with side of length C
Polygon parA; // parallelogram of base A and height A
Polygon parB; // parallelogram of base B and height B
Polygon poly1;
Polygon poly2;
Polygon poly3;
Polygon poly4;
Polygon poly5;
Polygon poly6;
int X0 = 350; // coordinates of triangle
int Y0 = 350;
int A = 90;//60; // triangle size
int B = 120;//80;
int C = 150;//100;
//CORDS of 2nd triangle
int X1 = 350;
int Y1 = 500;
// notes: three lines per note
String notes[] = {
// note 0
// note 1
// note 2
// note 3
// note 4
// note 5
// note 6
// note 7
// note 8
// note 9
// note 10
// note 11
// note 12
// note 13
// note 14
// constructor
public TestView() {
addMouseMotionListener(
new MouseMotionListener() { //anonymous inner class
//handle mouse drag event
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse " + e.getX() +"," + e.getY());
public void mouseDragged(MouseEvent e) {
System.out.println("Draggg: x=" + e.getX() + "; y=" + e.getY());
// set font
noteFaceFont = new Font("TimesRoman", Font.PLAIN, fontSize);
// (coordinates specified w.r.t. to P0, unless otherwise specified)
// create the triangle
tri = new Polygon();
tri.addPoint(0, 0); // add P0 coordinate
tri.addPoint(A*A/C, -A*B/C); // add A3 coordinate
tri.addPoint(C, 0); // add C1 coordinate
tri.translate(X0, Y0); // place triangle
tri1 = new Polygon();
tri1.addPoint(0,0); // add P0 coordinate
tri1.addPoint(A*A/C +38, +A*B/C); // add A3 coordinate
tri1.addPoint(C, 0); // add C1 coordinate
tri1.translate(X1, Y1);
// create square of side A
sqrA = new Polygon();
sqrA.addPoint(0, 0); // add P0 coordinate
sqrA.addPoint(-A*B/C, -A*A/C); // add A1 coordinate
sqrA.addPoint(-A*(B-A)/C, -A*(A+B)/C); // add A2 coordinate
sqrA.addPoint(A*A/C, -A*B/C); // add A3 coordinate
sqrA.translate(X0, Y0); // place square
// create square of side B
// warning: the coordinate of this object are specified relative to C1
sqrB = new Polygon();
sqrB.addPoint(0, 0); // add C1 coordinate
sqrB.addPoint(B*A/C, -B*B/C); // add B1 coordinate
sqrB.addPoint(B*(A-B)/C, -B*(A+B)/C); // add B2 coordinate
sqrB.addPoint(-B*B/C, -B*A/C); // add A3 coordinate
sqrB.translate(X0 + C, Y0); // place square
// create square of side C
sqrC = new Polygon();
sqrC.addPoint(0, 0); // add P0 coordinate
sqrC.addPoint(C, 0); // add C1 coordinate
sqrC.addPoint(C, C); // add C2 coordinate
sqrC.addPoint(0, C); // add C3 coordinate
sqrC.translate(X0, Y0); // place square
poly1 = new Polygon();
poly1.addPoint(405,279);
poly1.addPoint(413,350);
poly1.addPoint(432,500);
poly1.addPoint(442,571);
poly1.addPoint(500,500);
poly1.addPoint(500,350);
poly2 = new Polygon();
poly2.addPoint(279,297);
poly2.addPoint(404,280);
poly2.addPoint(571,254);
poly2.addPoint(500,350);
poly2.addPoint(350,350);
//Polygon 3
poly3 = new Polygon();
poly3.addPoint(404,280);
poly3.addPoint(350,350);
poly3.addPoint(414,350);
poly4 = new Polygon();
poly4.addPoint(350,350);
poly4.addPoint(350,500);
poly4.addPoint(442,572);
poly4.addPoint(433,500);
poly4.addPoint(414,350);
poly5 = new Polygon();
poly5.addPoint(476,183);
poly5.addPoint(332,225);
poly5.addPoint(278,295);
poly5.addPoint(404,279);
poly5.addPoint(571,254);
poly6= new Polygon();
poly6.addPoint(405,278);
poly6.addPoint(332,224);
poly6.addPoint(476,182);
// create parallelogram of height A
parA = new Polygon();
parA.addPoint(0, 0); // add P0 coordinate
parA.addPoint(0, C); // add C3 coordinate
parA.addPoint(A*A/C, C - A*B/C); // add Q0 coordinate
parA.addPoint(A*A/C, -A*B/C); // add A3 coordinate
parA.translate(X0,Y0); // place parallelogram
// create parallelogram of height B
// warning: the coordinate of this object are specified from C1
parB = new Polygon();
parB.addPoint(0, 0); // add C1 coordinate
parB.addPoint(-B*B/C, -B*A/C); // add A3 coordinate
parB.addPoint(A*A/C - C, C - A*B/C); // add Q0 coordinate
parB.addPoint(0, C); // add C2 coordinate
parB.translate(X0 + C, Y0);
// place parallelogram
// depending on the sequence number we draw certain objects
public void paint(Graphics gfx) {
super.paint(gfx);
Graphics2D g = (Graphics2D) gfx;
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// text first, then objects (and animation)
// we always output some notes
g.drawString(notes[3*sequence], noteX, noteY);
g.drawString(notes[3*sequence + 1], noteX, noteY + lineSpacing);
g.drawString(notes[3*sequence + 2], noteX, noteY + 2*lineSpacing);
// the object are drawn in an order so that they are properly overlapped
if(sequence == 13) {
g.setColor(Color.green);
g.fillPolygon(poly1);
g.fillPolygon(poly2);
g.fillPolygon(poly3);
g.fillPolygon(poly4);
g.fillPolygon(poly5);
g.setColor(Color.RED);
g.setColor(Color.GREEN);
g.drawLine(413,351,433,499);
g.setColor(Color.white);
g.fillPolygon(tri);
g.fillPolygon(tri1);
g.fillPolygon(poly6);
if(sequence == 12 ) {
g.setColor(Color.green);
g.fillPolygon(poly1);
g.fillPolygon(poly2);
g.fillPolygon(poly3);
g.fillPolygon(poly4);
g.fillPolygon(poly5);
g.setColor(Color.BLACK);
if(sequence == 11){
g.setColor(Color.green);
g.fillPolygon(poly1);
g.fillPolygon(poly3);
g.fillPolygon(poly4);
g.setColor(Color.BLACK);
if(sequence == 8 ){
g.setColor(Color.green);
g.fillPolygon(poly5);
g.setColor(Color.MAGENTA);
g.drawString("E",578,254);
g.drawString("D",268,302);
g.setColor(Color.black);
g.drawArc(250,150,350,250,320,65);
else if (sequence == 9 ){
g.setColor(Color.green);
g.fillPolygon(poly2);
g.setColor(Color.MAGENTA);
g.drawString("E",578,254);
g.drawString("D",268,302);
g.setColor(Color.black);
g.drawArc(250,150,350,250,320,65);
if( sequence == 10){
g.setColor(Color.green);
g.fillPolygon(poly2);
g.fillPolygon(poly5);
g.setColor(Color.black);
g.setColor(Color.MAGENTA);
g.drawString("E",578,254);
g.drawString("D",268,302);
g.setColor(Color.black);
g.drawArc(250,150,350,250,320,65);
if(sequence == 7){
g.setColor(Color.green);
g.fillPolygon(poly2);
g.setColor(Color.MAGENTA);
g.drawString("E",578,254);
g.drawString("D",268,302);
g.setColor(Color.black);
if(sequence == 6){
g.setColor(Color.yellow);
g.fillPolygon(poly2);
g.setColor(Color.green);
g.fillPolygon(poly3);
g.setColor(Color.blue);
g.fillPolygon(poly4);
g.setColor(Color.black);
g.drawArc(250,175,350,275,300,65);
//g.drawArc(250,150,350,250,320,65);
g.drawLine( 606,309,599,299);
g.drawLine(592,313, 599,299);
g.drawString("+90 degrees",605,378);
if (sequence == 5 ) {
g.setColor(Color.yellow);
g.fillPolygon(poly2);
g.setColor(Color.black);
if (sequence == 4) {
g.setColor(Color.YELLOW);
g.fillPolygon(poly1);
g.setColor(Color.black);
g.drawArc(319,310,250,195,89,-35);
g.drawLine(499,319, 492,312);
g.drawLine(499,319, 492,325);
g.drawArc(200,180, 233,238,-120,-60);
g.drawLine(200,298, 208,309);
g.drawLine(200,298, 194,313);
g.drawString("-90 degrees",227,347);
if (sequence >= 3) {
g.drawLine(404,279,442,572);
// draw the squares
if (sequence >= 2) {
g.drawLine(278,296,572,254);
// draw the squares
if (sequence >= 1) {
g.drawLine(333,224,476,182);
g.drawPolygon(tri1);
// always draw the triangle
g.drawPolygon(tri);
g.drawPolygon(sqrA);
g.drawPolygon(sqrB);
g.drawPolygon(sqrC);
g.setColor(Color.MAGENTA);
g.drawString("C", X0 + C/2 - fontSize/2, Y0 + lineSpacing);
g.drawString("A",
X0 + A*A/(2*C) - fontSize*A/B/2,
Y0 - A*B/(2*C) - lineSpacing*A/B);
g.drawString("B",
X0 + C - B*B/(2*C) - fontSize*A/B/2,// the last "-" isn't log.
Y0 - B*A/(2*C) - lineSpacing*A/B);
public void redraw(int sequence) {
this.sequence = sequence;
repaint();
}TEST CONTROL
* TestControl.java
* Created on 28 February 2005, 11:16
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.JFrame;
* @author Kripa Bhojwani
public class TestControl extends Panel implements ActionListener {
TestView view;
int sequence; // event sequence
// constructor
public TestControl(TestView view) {
Button b = null;
Label label = new Label("A^2 ");
this.view = view; // initialize drawble area
sequence = 0; // initialize sequence
b = new Button("Prev");
b.addActionListener(this);
add(b);
b = new Button("Next");
b.addActionListener(this);
add(b);
add(label);
// exported method
public void actionPerformed(ActionEvent ev) {
String label = ev.getActionCommand();
if (label.equals("Prev")) {
if (sequence >0) {
--sequence;
else {
if (sequence < 15) {
++sequence;
this.setEnabled(false); // disable the controls
view.redraw(sequence);
this.setEnabled(true); // enable the controls
}Please help --- really need to sort this out...
THANKSCross post http://forum.java.sun.com/thread.jspa?threadID=603432&messageID=3251958#3251958
-
I'm getting desperate for a solution to this problem (as is the rest of the development team!).
Basically we've been trying to create a system that automatically assigns values (frequencies) to objects (nodes) based on a rule set. Each node contains a varying number of sub-objects (radios) and each radio needs one frequency. The database has been set up and has test data for our Solution class to go through. However, we've run into an odd problem where our ResultSets are suddenly closing.
The classes work like this:
Database Broker (handles connection to DB, as well as executeQuery and executeUpdate statements.)
Entry Broker (Holds all SQL statements for data retrieval in various methods. Each method contains an SQL statement to access data, and code to format that data into something useable by the main class.
Solution/Main class (Contains methods to use the data from the Entry Broker to test valid solutions. Certain rules apply to assigning frequencies to radios and this class ensures that the data applies to these rules before it writes the data back to the DB (via the EntryBroker).
The problem we continually run into is that whilst the ResultSets work fine in the Entry Broker, they are closed when they return to the Main class.
Here's the catch: It seems in most cases that only the FIRST ResultSet returned in each method is closed, the remaining ResultSets work fine. We worked around this problem by creating a 'dummy' ResultSet, which obtained data from the database which was never used (the project name). We put this in its own try catch bracket so it would not interrupt the project.
It worked fine for a few classes, but for others (notably the following one) it was ineffective. We've searched and searched but we cannot find anyone with a similar complaint (except a few people who have commented about ODBC version problems). Our ODBC version is 3.520.7713.0
Here's an example method from the Solution class (The entire class is over 1000 lines):
// Method to test Harmonic resonance for nodes within 10m
private boolean resonanceGlobal (boolean tstResonanceG, double txFreq, double rxFreq, int distance) {
System.out.println("Beginning global harmonic resonance check");
try {
// Getting Nodes
rsNode2 = eBroker.getNodes(projectNo);
// node loop
while (rsNode2.next()) {
System.out.println("602 Test Marker GHarm 1");
// get next node, store in nodeTemp
nodeTemp = rsNode2.getInt(1);
// System out to show which nodes will pass if statement
System.out.println(node + " compare to " + nodeTemp);
// avoid testing the same node against itself
if (nodeTemp != node) {
// distance check (only neccesary within 10m)
System.out.println("Test Marker Before Distance check");
distance = getDistance(node, nodeTemp, distance);
System.out.println("Test Marker After Distance check");
// distance check if statement
if (distance <= 10) {
System.out.println("618 Test Marker GHarm 2");
// get the radios of the node, foreign node
rsRadiosTemp = eBroker.getRadios(node);
rsDummy = eBroker.getDummy(projectNo);
rsRadios2 = eBroker.getRadios(nodeTemp);
// This dummy ResultSet normally fails so that
// the other ResultSets perform normally
try {
rsDummy.next();
} // end try
catch (java.sql.SQLException dummyException) {
System.out.println("dummyException " + dummyException);
} // end catch
// radio loop
while (rsRadiosTemp.next()) { // error occurs here
System.out.println("627 Test Marker GHarm 3");
// loop for foreign node radios
while (rsRadios2.next()) {
System.out.println("631 Test Marker GHarm 4");
// get next radio
radioTemp = rsRadios2.getInt(1);
// get the TX and RX of the radio
genericTX = getTX(radioTemp);
radioTempCon = getConnection(radioTemp);
genericRX = getTX(radioTempCon);
// calculate bounds for harmonics test
txLo = ((txFreq * 2) - genericTX) - 4; // 4Mhz below TX harmonics check
txHi = ((txFreq * 2) - genericTX) + 4; // 4Mhz above TX harmonics check
rxHi = ((rxFreq * 2) - genericRX) + 4; // 4Mhz above RX harmonics check
rxLo = ((rxFreq * 2) - genericRX) - 4; // 4Mhz below RX harmonics check
// checks TX and RX of foreign radio against TX, RX of current radio for separation
if ((txLo > genericTX && txHi < genericTX) || (rxLo > genericRX && rxHi < genericRX)) {
tstResonanceG = false;
break;
} //end if
else {
tstResonanceG = true;
} // end else
} //end foreign radio loop
// breaking out of loops for return
if (tstResonanceG == false)
break;
} // end radio loop
rsRadios2.close();
rsRadiosTemp.close();
} // end sameradio check
} // end distance check
}// end node loop
rsNode2.close();
} // end try
// Catch statement to stop from crashing in the
// event of an error during SQL statements.
catch (java.sql.SQLException resonanceGlobalException) {
// Prints out the error message produced
System.out.println(resonanceGlobalException);
} // end catch
// returns result
return tstResonanceG;
} //end checkHarmonicResonanceGlobal()
My apologies if it is a little hard to read, but the indenting is accurate. The Entry Broker methods which this method uses are here:
public ResultSet getNodes (int projectNo) {
// creating SQL statement
sqlStatement = "SELECT nodeNo from tblNode WHERE projectNo = " + projectNo;
System.out.println(sqlStatement);
// executing SQL statement
rsNodes = db.runQuery(sqlStatement);
// returns ResultSet
return rsNodes;
} // end getNodes
// Method to get the distance between any two nodes
public int getDistance (int projectNo, int node, int tempNode) {
ResultSet rsX1; // Used for obtaining the X-coord of node 1
ResultSet rsX2; // Used for obtaining the X-coord of node 2
ResultSet rsY1; // Used for obtaining the Y-coord of node 1
ResultSet rsY2; // Used for obtaining the Y-coord of node 2
double distance = 0; // Used in Global checks
int dist = 0; // Used in Global checks
int x1 = 0; // Used in calculating distance
int x2 = 0; // Used in calculating distance
int y1 = 0; // Used in calculating distance
int y2 = 0; // Used in calculating distance
int xDist = 0; // Used in calculating distance
int yDist = 0; // Used in calculating distance
int distint = 0; // Used to store converted values
try {
// get the X and Y co-ordinates of both nodes
sqlStatement = "SELECT xCoord FROM tblNode WHERE nodeNo = " + node + " AND projectNo = " + projectNo;
rsX1 = db.runQuery(sqlStatement);
rsX1.next();
x1 = rsX1.getInt(1);
sqlStatement = "SELECT yCoord FROM tblNode WHERE nodeNo = " + node + " AND projectNo = " + projectNo;
rsY1 = db.runQuery(sqlStatement);
rsY1.next();
y1 = rsY1.getInt(1);
sqlStatement = "SELECT xCoord FROM tblNode WHERE nodeNo = " + tempNode + " AND projectNo = " + projectNo;
rsX2 = db.runQuery(sqlStatement);
rsX2.next();
x2 = rsX2.getInt(1);
sqlStatement = "SELECT yCoord FROM tblNode WHERE nodeNo = " + tempNode + " AND projectNo = " + projectNo;
rsY2 = db.runQuery(sqlStatement);
rsY2.next();
y2 = rsY2.getInt(1);
} // end try
catch (java.sql.SQLException getDistanceException) {
System.out.println(getDistanceException);
// calculating distance
yDist = y2 - y1;
xDist = x2 - x1;
// perform pythagoras theorem for distance
dist = (xDist * xDist) + (yDist * yDist);
distance = java.lang.Math.sqrt(dist);
Double roundFreqTemp = new Double(freqTemp);
distint = roundFreqTemp.intValue() ;
return distint;
} // end get distance method
// Method to get all the radios in a node
public ResultSet getRadios(int node) {
ResultSet rsRadios; // Used for obtaining radios in a node
// creating sql Statement
sqlStatement = "SELECT * FROM tblRadio WHERE nodeNo =" + node;
System.out.println(sqlStatement);
// executing sql Statement
rsRadios = db.runQuery(sqlStatement);
System.out.println("EB Test Marker 1: Line 261");
// returning radio no
return rsRadios;
}//end getRadio
public double getTX(int radioTemp){
double txTemp = 0; // Used for storing TX of a radio
int freqNoTemp = 0; // Used for storing the frequency ID
rsDummy = getDummy(projectNo);
// creating SQL statement
sqlStatement ="Select frequencyNo from tblRadio where radioNo = " + radioTemp;
System.out.println(sqlStatement);
// executing SQL statement
rsTX = db.runQuery(sqlStatement);
try {
System.out.println("Test Marker EB1: 317");
try {
rsDummy.next();
} // end try
catch (java.sql.SQLException dummyException) {
System.out.println("dummyException" + dummyException);
} // end catch
System.out.println("Test MarkerEB2: 330");
// moving to first position in rs
rsTX.next();
System.out.println("Test MarkerEB3: 334");
// obtaining data from rs
freqNoTemp = rsTX.getInt(1);
System.out.println("Test MarkerEB4: 337");
rsTX.close();
} // end try
catch (java.sql.SQLException rsTXException) {
System.out.println("rsTXExeption: " + rsTXException);
} // emd catch
System.out.println("Frequency No is: " + freqNoTemp);
rsDummy = getDummy(projectNo);
sqlStatement = "Select frequency from tblFreq where frequencyNo = " + freqNoTemp;
System.out.println(sqlStatement);
rsRX = db.runQuery(sqlStatement);
try {
try {
System.out.println("Test MarkerEB6: 361");
rsDummy.next();
} // end try
catch (java.sql.SQLException dummyException) {
System.out.println("dummyException" + dummyException);
} // end catch
System.out.println("Test MarkerEB5: 373");
rsRX.next();
System.out.println("Test MarkerEB7: 376");
txTemp = rsRX.getDouble(1);
System.out.println("Test MarkerEB8: 379");
rsRX.close();
} // end try
catch (java.sql.SQLException rxException) {
System.out.println("rxException " + rxException);
} // end catch
System.out.println("393 Before return");
return txTemp;
} //end getTX
public int getConnection(int radio) {
int nodeCon = 0; // Used to return the connected node no
ResultSet rsConnection; // Used for obtaining the foreign radio
// creating SQL statement
sqlStatement = "SELECT radioNo FROM tblRadio where recRadio = " + radio;
System.out.println(sqlStatement);
// executing SQL statement
rsConnection = db.runQuery(sqlStatement);
try {
// moving to first position in rs
rsConnection.next();
// obtaining data from rs
nodeCon = rsConnection.getInt(1);
} // end try
catch (java.sql.SQLException getConnectionException) {
System.out.println("getConnectionException : " + getConnectionException);
} // end catch
// returns node no.
return nodeCon;
And finally, the dummy rs:
// Dummy method to fix resultSet closed error
public ResultSet getDummy (int projectNo) {
sqlStatement = "Select projectName from tblProject where projectNo = " + projectNo;
System.out.println(sqlStatement);
rsDummy = db.runQuery(sqlStatement);
return rsDummy;
Here is some sample output that we have:
----jGRASP exec: java MainGui
slider value constructor: 50
116: if(singleton==null) {
120: singleton=new Resolvotron
Connection to D/Base establised
Select projectName from tblProject where projectNo = 3
Init OK. Beginning solve process
main OK: beginning frequency assign process
SELECT nodeNo from tblNode WHERE projectNo = 3
267: Node number = 2
SELECT * FROM tblRadio WHERE nodeNo =2
EB Test Marker 1: Line 261
Test Marker 1: Line 289
298: Radio number = 4
Test Marker 5: Line 308
Test Marker 3: Line 313
SELECT frequency from tblFreq WHERE projectNo = 3
125.5
Beginning test process
Test Marker 4: Line 386
Beginning check 257072
Test Marker 6: Line 774
70 Mhz Margin = false
Beginning local 10Mhz separation check
SELECT * FROM tblRadio WHERE nodeNo =2
EB Test Marker 1: Line 261
Getting TX of radio: 4
Select projectName from tblProject where projectNo = 3
Select frequencyNo from tblRadio where radioNo = 4
Test Marker EB1: 317
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB2: 330
Test MarkerEB3: 334
Test MarkerEB4: 337
Frequency No is: 2
Select projectName from tblProject where projectNo = 3
Select frequency from tblFreq where frequencyNo = 2
Test MarkerEB6: 361
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB5: 373
Test MarkerEB7: 376
Test MarkerEB8: 379
393 Before return
432: getting connection
SELECT radioNo FROM tblRadio where recRadio = 4
438: getting TX of radio: 6
Select projectName from tblProject where projectNo = 3
Select frequencyNo from tblRadio where radioNo = 6
Test Marker EB1: 317
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB2: 330
Test MarkerEB3: 334
Test MarkerEB4: 337
Frequency No is: 2
Select projectName from tblProject where projectNo = 3
Select frequency from tblFreq where frequencyNo = 2
Test MarkerEB6: 361
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB5: 373
Test MarkerEB7: 376
Test MarkerEB8: 379
393 Before return
java.sql.SQLException: ResultSet is closed
10 Mhz Local = true
Beginning 10 Mhz separation check
SELECT nodeNo from tblNode WHERE projectNo = 3
Node number is 2
10 Mhz Global = false
Beginning local harmonic resonance check
SELECT * FROM tblRadio WHERE nodeNo =2
EB Test Marker 1: Line 261
Select projectName from tblProject where projectNo = 3
Select frequencyNo from tblRadio where radioNo = 4
Test Marker EB1: 317
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB2: 330
Test MarkerEB3: 334
Test MarkerEB4: 337
Frequency No is: 2
Select projectName from tblProject where projectNo = 3
Select frequency from tblFreq where frequencyNo = 2
Test MarkerEB6: 361
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB5: 373
Test MarkerEB7: 376
Test MarkerEB8: 379
393 Before return
SELECT radioNo FROM tblRadio where recRadio = 4
Select projectName from tblProject where projectNo = 3
Select frequencyNo from tblRadio where radioNo = 6
Test Marker EB1: 317
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB2: 330
Test MarkerEB3: 334
Test MarkerEB4: 337
Frequency No is: 2
Select projectName from tblProject where projectNo = 3
Select frequency from tblFreq where frequencyNo = 2
Test MarkerEB6: 361
I'll leave it at that, since the program goes into an endless loop. The dummy Exceptions are our dummy resultsets crashing so the rest can survive. The other stuff is from different methods. You should be able to locate the logic of the program by following the System.outs
Test Markers with EB refer to the Entry Broker.
Any help would be appreciated since we cannot find any other way of running this class successfully.
SteveOk problem solved...
Basically I was calling one ResultSet after another. Thanks to the Database Broker's structure, this was killing the first ResultSet. I fixed up the loops so that ResultSets were only ever called just before they were needed, and it fixed the problem. The only other errors were simple logic faults which I drummed out in short order. Thanks for the help everyone! -
Calculating and displaying the Length of the side of a triangle
Hi everyone. I am currently working on Dragging and Stretching a triangle on screen. Ive got it working to a certain extent but the only problem is that whenever I go to the point from which i have to drag my triangle i.e. the Left hand Corner of the BAse at exactly 300,300 it redraws a new triangle below the existing one and then when i stretch it from the top and the right it leaves a trail of triangles everytime. But when i resize my window it clears the trail only to start agian when I drag or stretch it...
All my code for wahtever I have done is displayed below. I would appreciate all the help that any one can offer.
Secondly , as I stretch my triangle I would like to calculate My Length of the hypotenuse and the other 2 sides as they change and display it in System.out.println for now...
PLEASE HELP
the code is
This is my Main Form --- Interactive Geometry.java
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
* InteractiveGeometry.java
* Created on 30 November 2004, 20:29
* @author Kripa Bhojwani
public class InteractiveGeometry extends javax.swing.JFrame {
public EastPanel eastpanel;
public Container container;
public GeomPanel gp;
public boolean pressed = false;
public boolean pressT = false;
public boolean pressR = false;
/** Creates new form InteractiveGeometry */
public InteractiveGeometry() {
initComponents();
eastpanel = new EastPanel();
container = new Container();
Model model = new Model(300,150,450,300,300,300);
gp = new GeomPanel(model);
container = getContentPane();
container.add(eastpanel,BorderLayout.EAST);
container.add(gp,BorderLayout.CENTER);
setSize(1400,9950);
gp.addMouseMotionListener(
new MouseMotionListener() { //anonymous inner class
//handle mouse drag event
public void mouseDragged(MouseEvent me) {
setTitle("Dragging: x=" + me.getX() + "; y=" + me.getY());
public void mouseMoved(MouseEvent me) {
setTitle("Moving: x=" + me.getX() + "; y=" + me.getY());
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
private void initComponents() {
jMenuBar2 = new javax.swing.JMenuBar();
jMenu2 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenu1 = new javax.swing.JMenu();
jMenuItem2 = new javax.swing.JMenuItem();
addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
formMouseDragged(evt);
public void mouseMoved(java.awt.event.MouseEvent evt) {
formMouseMoved(evt);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
jMenuBar2.setBackground(new java.awt.Color(0, 102, 204));
jMenu2.setBackground(new java.awt.Color(222, 222, 238));
jMenu2.setText("File");
jMenu2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenu2ActionPerformed(evt);
jMenuItem1.setBackground(new java.awt.Color(204, 255, 255));
jMenuItem1.setText("Exit");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
jMenu2.add(jMenuItem1);
jMenuBar2.add(jMenu2);
jMenu1.setBackground(new java.awt.Color(199, 215, 255));
jMenu1.setText("Theorem ");
jMenuItem2.setText("Pythagoras Theorem");
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem2ActionPerformed(evt);
jMenu1.add(jMenuItem2);
jMenuBar2.add(jMenu1);
setJMenuBar(jMenuBar2);
pack();
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
private void formMouseDragged(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
private void formMouseMoved(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
public void mouseDragged(MouseEvent me) {
setTitle("Dragging: x=" + me.getX() + "; y=" + me.getY());
private void jMenu2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {
System.exit(0);
* @param args the command line arguments
public static void main(String args[]) {
InteractiveGeometry ig = new InteractiveGeometry();
ig.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ig.show();
// new InteractiveGeometry().show();
// Variables declaration - do not modify
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar2;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
// End of variables declaration
This is my Panel -- GeomPanel.java which draws everything -- /*
* GeomPanel.java
* Created on 30 November 2004, 20:29
import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.Graphics.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.event.*;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import javax.swing.event.TableModelListener;
import javax.swing.JScrollPane;
import javax.swing.event.*;
import java.awt.Dimension;
import java.awt.Container.*;
* @author Kripa Bhojwani
public class GeomPanel extends javax.swing.JPanel implements Observer, MouseMotionListener, MouseListener {
private Model model;
private boolean pressed = false;
private boolean pressT = false;
private boolean pressR = false;
/** Creates new form GeomPanel */
public GeomPanel(Model model) {
this.model = model;
model.addObserver(this);
addMouseListener(this);
addMouseMotionListener(this);
initComponents();
setBackground(Color.getHSBColor(6,600,660));
public void paintComponent(Graphics gfx) {
Graphics2D g = (Graphics2D) gfx;
Point tc = model.getTop();
Point lc = model.getLeft();
Point rc = model.getRight();
Point2D.Double p1 = new Point2D.Double(tc.getX(),tc.getY());
Point2D.Double p2 = new Point2D.Double(lc.getX(),lc.getY());
Point2D.Double p3 = new Point2D.Double(rc.getX(),rc.getY());
Line2D.Double line = new Line2D.Double(p1, p2);
Line2D.Double line1 = new Line2D.Double(p2, p3);
Line2D.Double line2 = new Line2D.Double(p1, p3);
g.setColor(Color.BLACK);
g.draw(line);
g.draw(line2);
g.draw(line1);
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
private void initComponents() {
setLayout(new java.awt.BorderLayout());
addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
formMouseDragged(evt);
private void formMouseDragged(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
public void mouseClicked(MouseEvent e) {
public void mouseDragged(MouseEvent e) {
System.out.println("Dragged at "+ e.getX()+ "," + e.getY());
if(pressed == true){
model.setLeft(e.getX() , e.getY());
else if(pressT == true){
model.setTop(e.getX() , e.getY());
else if (pressR == true){
model.setRight(e.getX(), e.getY());
else{
pressed = false;
pressT= false;
pressR=false;
repaint();
public void mouseEntered(MouseEvent e) {
public void mouseExited(MouseEvent e) {
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse at " + e.getX() +"," + e.getY());
public void mousePressed(MouseEvent e) {
if (model.getLeft().getX()== e.getX() && model.getLeft().getY()== e.getY()){
pressed = true;
else if (model.getTop().getX()==e.getX() && model.getTop().getY()==e.getY()){
pressT = true;
else if(model.getRight().getX() == e.getX() && model.getRight().getY()==e.getY()){
pressR = true;
// else if(model.getCircle().getX() == e.getX() && model.getCircle().getY() == e.getY()){
// inoval = true;
else {
pressed =false;
pressT = false;
pressR = false;
} repaint();
public void mouseReleased(MouseEvent e) {
if(pressed == true){
model.setLeft(e.getX(),e.getY());
else if (pressT ==true ){
model.setTop(e.getX(), e.getY());
else if(pressR ==true){
model.setRight(e.getX(),e.getY());
else {
pressed = false;
pressT = false;
pressR = false;
repaint();
public void update(Observable o, Object arg) {
repaint();
// Variables declaration - do not modify
// End of variables declaration
This is my Model class called Model.java which Holds all teh data for my triangle
import java.awt.Point;
import java.util.Observable;
* Model.java
* Created on 05 December 2004, 14:11
* @author Kripa Bhojwani
public class Model extends Observable{
private int x1,x2,x3, y1,y2,y3;
private int _transx;
private int _transy;
private int _c;
private int _d;
/** Creates a new instance of Model */
public Model(int x1, int y1, int x2, int y2, int x3, int y3) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.x3 = x3;
this.y3 = y3;
setChanged();
notifyObservers();
public void setTop(int x1, int y1){
//this.x1 =x1;
this.y1= y1;
setChanged();
notifyObservers();
public void setRight(int x2, int y2){
this.x2 = x2;
// this.y2 =y2;
setChanged();
notifyObservers();
public void setLeft(int x3, int y3){
_transx = x3 - this.x3;
_transy = y3 - this.y3;
this.x3 += _transx;
this.y3 += _transy;
this.y2 += _transy;
this.x2 += _transx;
this.x1 += _transx;
this.y1 += _transy;
setChanged();
notifyObservers();
public Point getTop(){
Point p = new Point(x1,y1);
return p;
public Point getRight(){
Point p1 = new Point(x2,y2);
return p1;
public Point getLeft(){
Point p3 = new Point(x3,y3);
return p3;
public void update() {
setChanged();
notifyObservers();
This is my TableModel which is the JTable to display all the Cordinates and Lengths and other Measurements like angles etc./*
* TableModel.java
* Created on 03 December 2004, 15:08
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
import java.util.Observer;
import javax.swing.event.TableModelEvent;
import javax.swing.table.AbstractTableModel;
* @author Kripa Bhojwani
public class TableModel extends AbstractTableModel implements Observer{
private String[] columnNames = {"Point", "X Coordinate", "Y Coordinate"};
private Object[][] data = {};
private int rowCount;
private int columnCount;
/** Creates a new instance of TableModel */
public TableModel() {
rowCount = 0;
columnCount = 3;
public int getColumnCount() {
return columnCount;
public int getRowCount() {
return rowCount;
public String getColumnName(int col) {
return columnNames[col];
public void setColumnName (String[] name){
columnNames = name;
public void setValueAt(Object obj, int row, int col) {
data[row][col] = obj;
fireTableCellUpdated(row, col);
TableModelEvent tme = new TableModelEvent(this);
fireTableChanged(tme);
public Object getValueAt(int row, int col) {
return data[row][col];
public void update(java.util.Observable o, Object arg) {
This is the Panel on the east side of My Main application form which will display all the measurements and Cordinates ---EastPanel.java
import java.awt.BorderLayout;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelListener;
import java.awt.Dimension;
* EastPanel.java
* Created on 04 December 2004, 23:07
* @author Kripa Bhojwani
public class EastPanel extends javax.swing.JPanel implements TableModelListener{
private TableModel tm;
/** Creates new form EastPanel */
public EastPanel() {
initComponents();
tm = new TableModel();
JTable table1 = new JTable(tm);
table1.setPreferredScrollableViewportSize(new Dimension(250,264));
table1.getModel().addTableModelListener(this);
JScrollPane sp = new JScrollPane(table1);
add(sp,BorderLayout.EAST);
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
private void initComponents() {
setLayout(new java.awt.BorderLayout());
public void tableChanged(javax.swing.event.TableModelEvent e) {
// Variables declaration - do not modify
// End of variables declaration
}import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.DefaultTableCellRenderer;
public class G
public G()
TriangleModel tri = new
ri = new TriangleModel(175,100,175,250,325,250);
TriangleView view = new TriangleView(tri);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(view.getUIPanel(),
Panel(), "North");
f.getContentPane().add(view);
f.getContentPane().add(view.getTablePanel(),
Panel(), "South");
f.setSize(500,500);
f.setLocation(200,200);
f.setVisible(true);
public static void main(String[] args)
new G();
class TriangleModel // (x1,
y1)
{ // |\
static final int SIDES = 3; // | \
private int cx, cy; // |
| \
Polygon triangle; // |_
|_ _\ (x3, y3)
int selectedIndex; // (x2,
(x2, y2)
NumberFormat nf;
Line2D[] medians;
Point2D centroid;
public TriangleModel(int x1, int y1, int x2, int
int y2, int x3, int y3)
int[] x = new int[] { x1, x2, x3 };
int[] y = new int[] { y1, y2, y3 };
triangle = new Polygon(x, y, SIDES);
nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(1);
public boolean contains(Point p)
// Polygon.contains doesn't work well enough
return (new Area(triangle)).contains(p);
public boolean isLineSelected(Rectangle r)
Line2D line = new Line2D.Double();
for(int j = 0; j < SIDES; j++)
int[] x = triangle.xpoints;
int[] y = triangle.ypoints;
int x1 = x[j];
int y1 = y[j];
int x2 = x[(j + 1) % SIDES];
int y2 = y[(j + 1) % SIDES];
line.setLine(x1, y1, x2, y2);
if(line.intersects(r))
selectedIndex = j;
return true;
selectedIndex = -1;
return false;
* Only works for right triangle with right angle
angle at (x2, y2)
public void moveSide(int dx, int dy, Point p)
int[] x = triangle.xpoints;
int[] y = triangle.ypoints;
switch(selectedIndex)
case 0:
x[0] += dx;
x[1] += dx;
break;
case 1:
y[1] += dy;
y[2] += dy;
break;
case 2:
double rise = y[2] - y[0];
double run = x[2] - x[0];
double slope = rise/run;
// rise / run == (y[2] - p.y) / (x[2]
] - p.y) / (x[2] - p.x)
x[2] = p.x + (int)((y[2] - p.y) /
)((y[2] - p.y) / slope);
// rise / run == (p.y - y[0]) / (p.x
y - y[0]) / (p.x - x[0])
y[0] = p.y - (int)((p.x - x[0]) *
)((p.x - x[0]) * slope);
public void translate(int dx, int dy)
triangle.translate(dx, dy);
public Polygon getTriangle()
return triangle;
public String findCentroid()
int[] x = triangle.xpoints;
int[] y = triangle.ypoints;
// construct the medians defined as the line
the line from
// any vertex to the midpoint of the opposite
opposite line
medians = new Line2D[x.length];
for(int j = 0; j < x.length; j++)
int next = (j + 1) % x.length;
int last = (j + 2) % x.length;
Point2D vertex = new Point2D.Double(x[j],
Double(x[j], y[j]);
// get midpoint of line opposite vertex
double dx = ((double)x[last] -
le)x[last] - x[next])/2;
double dy = ((double)y[last] -
le)y[last] - y[next])/2;
Point2D oppLineCenter = new
Center = new Point2D.Double(x[next] + dx,
y[next]
y[next] + dy);
medians[j] = new Line2D.Double(vertex,
uble(vertex, oppLineCenter);
// centroid is located on any median 2/3 the
2/3 the way from the
// vertex (P1) to the midpoint (P2) on the
) on the opposite side
double[] lengths = getSideLengths();
double dx = (medians[0].getX2() -
etX2() - medians[0].getX1())*2/3;
double dy = (medians[0].getY2() -
etY2() - medians[0].getY1())*2/3;
double px = medians[0].getX1() + dx;
double py = medians[0].getY1() + dy;
//System.out.println("px = " + nf.format(px)
rmat(px) +
// "\tpy = " +
py = " + nf.format(py));
centroid = new Point2D.Double(px, py);
return "(" + nf.format(px) + ", " +
", " + nf.format(py) + ")";
public String[] getAngles()
double[] lengths = getSideLengths();
String[] vertices = new
es = new String[lengths.length];
for(int j = 0; j < lengths.length; j++)
int opp = (j + 1) % lengths.length;
int last = (j + 2) % lengths.length;
double top = lengths[j] * lengths[j] +
lengths[last] *
lengths[last] * lengths[last] -
lengths[opp] *
lengths[opp] * lengths[opp];
double divisor = 2 * lengths[j] *
lengths[j] * lengths[last];
double vertex = Math.acos(top /
h.acos(top / divisor);
vertices[j] =
ertices[j] = nf.format(Math.toDegrees(vertex));
return vertices;
public String[] getLengths()
double[] lengths = getSideLengths();
String[] lengthStrs = new
rs = new String[lengths.length];
for(int j = 0; j < lengthStrs.length; j++)
lengthStrs[j] = nf.format(lengths[j]);
return lengthStrs;
public String[] getSquares()
double[] lengths = getSideLengths();
String[] squareStrs = new
rs = new String[lengths.length];
for(int j = 0; j < squareStrs.length; j++)
squareStrs[j] = nf.format(lengths[j] *
lengths[j] * lengths[j]);
return squareStrs;
private double[] getSideLengths()
int[] x = triangle.xpoints;
int[] y = triangle.ypoints;
double[] lengths = new double[SIDES];
for(int j = 0; j < SIDES; j++)
int next = (j + 1) % SIDES;
lengths[j] = Point.distance(x[j], y[j],
(x[j], y[j], x[next], y[next]);
return lengths;
class TriangleView extends JPanel
private TriangleModel model;
private Polygon triangle;
private JTable table;
private JLabel centroidLabel;
private boolean showConstruction;
TriangleControl control;
public TriangleView(TriangleModel model)
this.model = model;
triangle = model.getTriangle();
showConstruction = false;
control = new TriangleControl(this);
addMouseListener(control);
addMouseMotionListener(control);
public void paintComponent(Graphics g)
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.draw(triangle);
if(model.medians == null)
centroidLabel.setText("centroid location:
id location: " + model.findCentroid());
// draw medians and centroid point
if(showConstruction && !control.dragging)
g2.setPaint(Color.red);
for(int j = 0; j < 3; j++)
g2.draw(model.medians[j]);
g2.setPaint(Color.blue);
g2.fill(new
g2.fill(new Ellipse2D.Double(model.centroid.getX() -
2,
model.centroid.getY()
model.centroid.getY() - 2, 4, 4));
public TriangleModel getModel()
return model;
public JTable getTable()
return table;
public JLabel getCentroidLabel()
return centroidLabel;
public JPanel getUIPanel()
JCheckBox showCon = new JCheckBox("show
ox("show construction");
showCon.addActionListener(new
ener(new ActionListener()
public void actionPerformed(ActionEvent
(ActionEvent e)
boolean state =
boolean state =
((JCheckBox)e.getSource()).isSelected();
showConstruction = state;
repaint();
JPanel panel = new JPanel();
panel.add(showCon);
return panel;
public JPanel getTablePanel()
String[] headers = new String[] { "", "", "",
// row and column data labels
String[] rowHeaders = {
"sides", "lengths", "squares", "angles",
", "angles", "degrees"
String[] sidesRow = { "vertical",
rtical", "horizontal", "hypotenuse" };
String[] anglesRow = { "hyp to ver", "ver to
"ver to hor", "hor to hyp" };
// collect data from model
String[] angles = model.getAngles();
String[] lengths = model.getLengths();
String[] squares = model.getSquares();
String[][] allData = { sidesRow, lengths,
lengths, squares, anglesRow, angles };
int rows = 5;
int cols = 4;
Object[][] data = new Object[rows][cols];
for(int row = 0; row < rows; row++)
data[row][0] = rowHeaders[row];
for(int col = 1; col < cols; col++)
data[row][col] = allData[row][col -
lData[row][col - 1];
table = new JTable(data, headers)
public boolean isCellEditable(int row,
ble(int row, int col)
return false;
DefaultTableCellRenderer renderer =
(DefaultTableCellRenderer)table.getDefaultRenderer(St
ring.class);
renderer.setHorizontalAlignment(JLabel.CENTER);
centroidLabel = new JLabel("centroid
centroid location: ", JLabel.CENTER);
Dimension d =
sion d = centroidLabel.getPreferredSize();
d.height = table.getRowHeight();
centroidLabel.setPreferredSize(d);
JPanel panel = new JPanel(new
anel(new BorderLayout());
panel.setBorder(BorderFactory.createTitledBorder("tri
angle data"));
panel.add(table);
panel.add(centroidLabel, "South");
return panel;
class TriangleControl extends MouseInputAdapter
TriangleView view;
TriangleModel model;
Point start;
boolean dragging, altering;
Rectangle lineLens; // used for line
line selection
public TriangleControl(TriangleView tv)
view = tv;
model = view.getModel();
dragging = altering = false;
lineLens = new Rectangle(0, 0, 6, 6);
public void mousePressed(MouseEvent e)
Point p = e.getPoint();
lineLens.setLocation(p.x - 3, p.y - 3);
// are we over a line
if(model.isLineSelected(lineLens))
start = p;
altering = true;
// or are we within the triangle
else if(model.contains(p))
start = p;
dragging = true;
public void mouseReleased(MouseEvent e)
altering = false;
dragging = false;
view.getCentroidLabel().setText("centroid
centroid location: " +
model.findCentroid());
view.repaint(); // for the construction
truction lines
public void mouseDragged(MouseEvent e)
Point p = e.getPoint();
if(altering)
int x = p.x - start.x;
int y = p.y - start.y;
model.moveSide(x, y, p);
updateTable();
view.repaint();
start = p;
else if(dragging)
int x = p.x - start.x;
int y = p.y - start.y;
model.translate(x, y);
view.repaint();
start = p;
private void updateTable()
String[] lengths = model.getLengths();
String[] squares = model.getSquares();
String[] angles = model.getAngles();
JTable table = view.getTable();
for(int j = 0; j < angles.length; j++)
table.setValueAt(lengths[j], 1, j + 1);
table.setValueAt(squares[j], 2, j + 1);
table.setValueAt(angles[j], 4, j + 1);
view.getCentroidLabel().setText("centroid
centroid location: " +
model.findCentroid());
Hey sorry mate.. ive got a nother problem.
I need to add loads of theorems to this tool. so i need a JMenu Bar called File with all the normal things. then another Menu called Theorems where i can have a list of JMenuItems with the theorem names --- Like when they click on Pythagoras Theorem it opens up all the triangle and the traingle data that u helped me with.
The thing is im using netbeans and in netbeans i can do it coz its there and all you got to do is put the components together.
Please Help
Thanks...
Sharan -
How do I get rid of the two A A on my screen/printed documents?
Please see:
@: Math calculators » Number conversion
ADVERTISEMENT
Antilog Calculator
Antilog Calculator commonly called as Anti Log or Inverse Log calculator, is an online tool used to calculate Inverse Log values with respect to the base values
AntiLog or Inverse Logarithm
The anti-log is simply the inverse log calculation. Namely, if you know the logarithm of a number, you can compute the value of the number itself by taking the antilog. The anti logarithm is defined as
y = antilog x = 10x
For example, if you want to compute the antilogarithm of 3.5. Clearly, since 3.5 is a number between 3 and 4, the antilogarithm will result in some number between 1000 and 10,000. If more accuracy is required, this online anti-log calculator can help you out find out the exact value of the given input. Since Log and antilog are inverse functions, then this means that
10Log x = x, and Log 10x = x
You can use this information to modify a formula to solve for different desired quantities. As a general rule, logarithm or anti log functions operate on numbers that are unit less
Similar Resource
Worksheet for how to Calculate Antilog
Antilog Calculation
Find Anti Log for
Enter Logarithm Base
Eg: e, 10, 2
Also Try: Log Calculator
Print
Advertisement
Ad Info
Advertisement
Logarithm Calculator
Binary to Decimal, Hexa, Octal Converter
Decimal to Binary, Hexa, Octal Converter
Hexa to Decimal, Binary, Octal Converter
Octal to Binary, Hexa, Decimal Converter
GCD or HCF Calculator
LCM Calculator
Number to Word Converter
Percentage Calculator
Prime Number Calculator
Pythagoras Theorem Calculator
Square Root Calculator
Online Financial Calculators, Math Calculations
Home
$ Currency Converter
Math Worksheets
Finance Calculators
Mortgage Calculators
Loan Calculators
Interest Calculators
Investment Calculators
Credit & Debt Calculators
Profit & Loss Calculators
Tax Calculators
Insurance Calculators
Math Calculators
Statistics Calculators
Number Conversions
Matrix Calculators
Algebra Calculators
Geometry Calculators
Addition Table
Multiplication Table
Multiplication Worksheet
Area & Volume Calculators
Unit Conversions
Time & Date Calculators
Electronics Calculators
Electrical Calculators
Digital Computations
nCalculators.com © 2013
Privacy policy
Terms of Use
Disclaimers
Contact us
Weapons
Machine Gun
Missile Launch
Sound
On/Off
Game
Quit
Reload
Restart
Play/Pause
Stop
Scores
High Scores list
press ctrl+alt+a to play/stop
5
Menu
0
Ad InfoI solved the problem...it was a websteroids virus. I used a series of debugging programs, but needed to remove folders and files from my hard drive manually. Searched for websteroids. Google searches were helpful for most of the steps, but the last one you'll need to do yourself.
-
Hello everyone, I am working on a game and was wondering if I could get some help. I have a ball that bounces around in a box, and place one small ball in the applet. I want to create an effect that when the ball that is moving comes into connect with the static ball, the moving ball bounces in the opposite direction. I used this:
if(x_pos - 100 < 2 & y_pos - 100 < 2 || 100-x_pos < 2 && 100 - y_pos < 2)
where x_pos and y_pos are for the moving ball, and 100 is the radius of the static ball. Should I use the Pythagoras theorem to do it?
Thank You In Advance for any help.Use java.awt.Shape and its contains() method. It's a standard collision detection idiom.
-
I expect no replies to this thread - because there are no
answers, but I want to raise awareness of a faculty of other
languages that is missing in Flash that would really help 3D and
games to be built in Flash.
Below is an optimisation of the Quake 3 inverse square root
hack. What does it do? Well in games and 3D we use a lot of vector
math and that involves calculating normals. To calculate a normal
you divide a vector's parameters by it's length, the length you
obtain by pythagoras theorem. But of course division is slow - if
only there was a way we could get 1.0/Math.sqrt so we could just
multiply the vector and speed it up.
Which is what the code below does in Java / Processing. It
runs at the same speed as Math.sqrt, but for not having to divide,
that's still a massive speed increase.
But we can't do this in Flash because there isn't a way to
convert a Number/float into its integer-bits representation. Please
could everyone whinge at Adobe about this and give us access to a
very powerful tool. Even the guys working on Papervision are having
trouble with this issue.that's just an implementation of newton's method for finding
the zeros of a differentiable function. for a given x whose inverse
sq rt you want to find, the function is:
f(y) = 1/(y*y) - x;
1. you can find the positive zero of f using newton's method.
2. you only need to consider values of x between 1 and 10
because you can rewrite x = 10^^E * m, where 1<=m<10.
3. the inverseRt(x) = 10^^(-E/2) * inverseRt(m)
4. you don't have to divide E by 2. you can use bitwise shift
to the right by 1.
5. you don't have to multiply 10^^(-E/2) by inverseRt(m): you
can use a decimal shift of inverseRt(m);
6. your left to find the positive zero of f(y) = 1/(y*y) - m,
1<=m<10.
and at this point i realized what, i believe, is a much
faster way to find inverse roots: use a look-up table.
you only need a table of inverse roots for numbers m,
1<m<=10.
for a given x = 10^^E*m = 10^^(e/2) *10^^(E-e/2)*m, where e
is the largest even integer less than or equal to E (if E is
positive, e is the greatest even integer less than or equal to E,
if E is negative), you need to look-up, at most, two inverse roots,
perform one multiplication and one decimal shift:
inverseRt(x) = 10^^(-e) * inverseRt(10) *inverseRt(m), if
E-e/2 = 1 and
inverseRt(x) = 10^^(-e) * inverseRt(m), if E-e/2 = 0. -
Hi,
In response to an earlier problem i posted which i thought i had resolved i have to ask some more advice as i am still having problems.
Basically i have two points (0,0,0) and (1,1,1) where two spheres are located, im trying to connect a cylinder to these spheres. I have tried using Pythagoras theorem and this connects the spheres up perfectly if the z value is assigned to 0 when i use the rotZ() method with the resulting angle. What i would like to know is there any way of connecting the spheres with 3 coordinates for x,y,z using the same method.
The main formula i was working on was after connecting up the spheres in just 2 dimensions (ie z value equal to 0) as i mentioned earlier, was to calculate the length of the hypoteneus and have the z value divide this (ie using Pytagoras' theorem again tan teeta = z2-z1/c where c is the sqrt(x*x+y*y) ). Once i got this angle i then rotated it around the Y axis (im not sure if i am actually rotating it around the correct axis, i know that i also have to rotate around the X axis a certain degree but i dont know how much) however the spheres still did not connect up.
Is it possible to do it the above way or do i need to do i need to use all vector calculations (dot, cross products etc) which i would prefer to stay away from?
Sorry if it is not very clear it is kind of hard to explain!
Any help would be greatly appreciated because it is really driving me nuts.
Regards
AndyHi
Just putting up the code to show how i am figuring out the angles and what rotations im using
double tanTeetaXY = (y-0.0f)/(x-0.0f);
double teetaXY = Math.atan(tanTeetaXY);
double tanTeetaXZ = (z-0.0f)/(x-0.0f);
double teetaXZ = Math.atan(tanTeetaXZ);
double testang = (y-0.0f)/(z-0.0f);
double teetatest = Math.atan(testang);
rotate.rotZ((Math.PI/2.0f)-teetaXY);
temprotate.rotY(teetaXZ);
rotate.mul(temprotate);
temprotate.rotX(teetatest);
rotate.mulInverse(temprotate);
rotate.invert();Am i completely off with this or is there a better way to figure things out does anyone know? I just cant get my head around it!
Much appreciated
Andy -
How to find a point lies inside circle
Hi,
How do I find a point (x,y) is lies inside a circle? I trying to do a small shooting game.
If the user clicks inside the circle they get a point. I am using the Pythagoras theorem to achieve this. But I can't.
Please advice me.
Here is my code
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Shoot extends JFrame implements MouseListener, MouseMotionListener
private int winWidth = 300;
private int winHeight = 300;
private MyCanvas canvas = null;
private int ballX = 50;
private int ballY = 50;
private int ballW = 50;
private int ballH = 50;
private int ballR = ballW / 2;
private int curX = 0;
private int curY = 0;
private int left = 0;
private int top = 0;
public Shoot()
Cursor c = new Cursor(Cursor.CROSSHAIR_CURSOR);
this.setCursor(c);
canvas = new MyCanvas();
packIt();
left = getInsets().left;
top = getInsets().top;
private void packIt()
setTitle("My first game!");
setPreferredSize(new Dimension(winWidth, winHeight));
setSize(new Dimension(winWidth, winHeight));
setContentPane(canvas);
addMouseListener(this);
addMouseMotionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setUndecorated(true);
setLocation(300, 0);
setVisible(true);
public void mouseClicked(MouseEvent e)
int x = e.getX() - left - ballX;
int y = e.getY() - top - ballY;
int r = ballR;
System.out.println("x :" + x + "\ty :" + y);
//Trying to implememt Pythagoras theorem. But I am missing something.
System.out.println(((x * x) + (y * y)) + "\t=\t" + (r * r));
System.out.println();
public void mousePressed(MouseEvent e)
public void mouseReleased(MouseEvent e)
public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
public void mouseDragged(MouseEvent e)
public void mouseMoved(MouseEvent e)
curX = e.getX() - left;
curY = e.getY() - top;
canvas.repaint();
private class MyCanvas extends JPanel
public MyCanvas()
setBackground(Color.BLACK);
setBorder(BorderFactory.createLineBorder(Color.yellow));
public void paintComponent(Graphics g)
super.paintComponent(g);
g.setColor(Color.WHITE);
g.drawString("x :" + curX, 10, 20);
g.drawString("y :" + curY, 10, 30);
g.setColor(Color.RED);
g.fillOval(ballX, ballY, ballW, ballH);
public static void main(String[] asd)
new Shoot();
}public boolean isPointInCircle(){
double x= circle.getWidth/2.0+circle.getX();
double y= circle.getHeight/2.0+circle.getY();
double distance=getDistance(x,y,pointX,PointY);
return (distance<= circle.getWidth/2.0); //if the distance from the point to the center of the circle is less than the radius of the circle return true
double getDistance(double x1, double y1, double x2, double y2){
return math.sqrt((x1-x2)(x1-x2) + (y1-y2)(y1-y2));
}Edited by: ghostbust555 on Jan 23, 2011 3:20 PM -
URGENT HELP REQUIRED _ Creating Labels for Triangle
Hi everyone... the code below is my application - Pythagoras Theorem.. or rather displaying it.. But i have not been able to get the Vertex of the triangle Labelled as A B C... I need to do that and change the Triangle Table data to A B C insted of Horizontal Vertical and Hypotenuise and as the triangle is stretched on screen A B And C keep moving as well ...
Besides i need to Show this in the tabel
- Values of A ^ 2 , B^2 and C ^2 as welll as a row showing A^2+B^2 = C^2
the code is as follows..
This is the main class called Geometry
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.lang.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.FileDialog;
import java.io.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
public class Geometry {
CardLayout cards;
JPanel panel;
public Geometry() {
cards = new CardLayout();
panel = new JPanel(cards);
addCards();
JFrame f = new JFrame("Geometry");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setJMenuBar(getMenuBar());
f.getContentPane().add(panel);
f.setSize(500,500);
f.setLocation(0,0);
f.setVisible(true);
f.addMouseMotionListener(
new MouseMotionListener() { //anonymous inner class
//handle mouse drag event
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse " + e.getX() +"," + e.getY());
public void mouseDragged(MouseEvent e) {
System.out.println("Draggg: x=" + e.getX() + "; y=" + e.getY());
// public void mouseMoved(MouseEvent me) {
// System.out.println("Moving: x=" + me.getX() + "; y=" + me.getY());
// panel.addMouseMotionListener(
// new MouseMotionListener() { //anonymous inner class
// //handle mouse drag event
// public void mouseDragged(MouseEvent me) {
// setTitle("Dragging: x=" + me.getX() + "; y=" + me.getY());
// public void mouseMoved(MouseEvent me) {
// setTitle("Moving: x=" + me.getX() + "; y=" + me.getY());
private void addCards() {
// card one
TriangleModel tri = new TriangleModel(175,100,175,250,325,250);
TriangleView view = new TriangleView(tri);
JPanel panelOne = new JPanel(new BorderLayout());
panelOne.add(view.getUIPanel(), "North");
panelOne.add(view);
panelOne.add(view.getTablePanel(), "South");
panelOne.setName("Pythagoras's Theorem");
panel.add("Pythagoras's Theorem", panelOne);
view.addMouseMotionListener(
new MouseMotionListener() { //anonymous inner class
//handle mouse drag event
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse at " + e.getX() +"," + e.getY());
public void mouseDragged(MouseEvent e) {
System.out.println("Dragging: x=" + e.getX() + "; y=" + e.getY());
// card two
TestModel trin = new TestModel(175,100,175,250,325,250);
TestView viewn = new TestView(trin);
JPanel panelTwo = new JPanel(new BorderLayout());
panelTwo.add(viewn.getUIPanel(), "North");
// panelTwo.setBackground(Color.blue);
panelTwo.setName("Similar Triangles");
panelTwo.add(viewn);
panelTwo.add(viewn.getTablePanel(), "South");
viewn.addMouseMotionListener(
new MouseMotionListener() { //anonymous inner class
//handle mouse drag event
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse at " + e.getX() +"," + e.getY());
public void mouseDragged(MouseEvent e) {
System.out.println("Dragging: x=" + e.getX() + "; y=" + e.getY());
panel.add("Similar Triangles", panelTwo);
JPanel panelThree = new JPanel();
panelThree.setBackground(Color.white);
panelThree.setName("Circle Theorem1");
panel.add("Circle Theorem1", panelThree);
private JMenuBar getMenuBar() {
JMenu File = new JMenu("File");
JSeparator separator1 = new JSeparator();
JMenuItem Open = new JMenuItem("Open");
// Open.addActionListener(new java.awt.event.ActionListener() {
// public void actionPerformed(java.awt.event.ActionEvent evt) {
// openActionPerformed(evt);
JMenuItem Save = new JMenuItem("Save");
JMenuItem Print = new JMenuItem("Print");
JMenuItem Exit = new JMenuItem("Exit");
Exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExitActionPerformed(evt);
JMenu theorem = new JMenu("Theorem");
ActionListener l = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JMenuItem item = (JMenuItem)e.getSource();
String name = item.getActionCommand();
cards.show(panel, name);
Component[] c = panel.getComponents();
for(int j = 0; j < panel.getComponentCount(); j++) {
String name = c[j].getName();
JMenuItem item = new JMenuItem(name);
item.setActionCommand(name);
item.addActionListener(l);
theorem.add(item);
JMenuBar menuBar = new JMenuBar();
JMenuBar menuBar1 = new JMenuBar();
menuBar.add(File);
File.add(Open);
File.add(separator1);
File.add(Save);
File.add(Print);
File.add(Exit);
menuBar.add(theorem);
return menuBar;
// private void openActionPerformed(java.awt.event.ActionEvent evt) {
// FileDialog fileDialog = new FileDialog(this, "Open...", FileDialog.LOAD);
// fileDialog.show();
// if (fileDialog.getFile() == null)
// return;
// fileName = fileDialog.getDirectory() + File.separator + fileDialog.getFile();
// FileInputStream fis = null;
// String str = null;
// try {
// fis = new FileInputStream(fileName);
// int size = fis.available();
// byte[] bytes = new byte [size];
// fis.read(bytes);
// str = new String(bytes);
// } catch (IOException e) {
// } finally {
// try {
// fis.close();
// } catch (IOException e2) {
// if (str != null)
// textBox.setText(str);
private void ExitActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
public static void main(String[] args) {
new Geometry();
}import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.DefaultTableCellRenderer;
public class Triangle
public Triangle()
TriangleModel tri = new TriangleModel(175,100,175,250,325,250);
TriangleView view = new TriangleView(tri);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(view.getUIPanel(), "North");
f.getContentPane().add(view);
f.getContentPane().add(view.getTablePanel(), "South");
f.setSize(500,500);
f.setLocation(200,200);
f.setVisible(true);
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import javax.swing.JTable;
import javax.swing.event.MouseInputAdapter;
* TriangleControl.java
* Created on 06 February 2005, 01:19
* @author Rahindra Naidoo
public class TriangleControl extends MouseInputAdapter
TriangleView view;
TriangleModel model;
Point start;
boolean dragging, altering;
Rectangle lineLens; // used for line selection
public TriangleControl(TriangleView tv)
view = tv;
model = view.getModel();
dragging = altering = false;
lineLens = new Rectangle(0, 0, 6, 6);
public void mousePressed(MouseEvent e)
Point p = e.getPoint();
lineLens.setLocation(p.x - 3, p.y - 3);
// are we over a line
if(model.isLineSelected(lineLens))
start = p;
altering = true;
// or are we within the triangle
else if(model.contains(p))
start = p;
dragging = true;
public void mouseReleased(MouseEvent e)
altering = false;
dragging = false;
view.getCentroidLabel().setText("centroid location: " +
model.findCentroid());
view.repaint(); // for the construction lines
public void mouseDragged(MouseEvent e)
Point p = e.getPoint();
if(altering)
int x = p.x - start.x;
int y = p.y - start.y;
model.moveSide(x, y, p);
updateTable();
view.repaint();
start = p;
else if(dragging)
int x = p.x - start.x;
int y = p.y - start.y;
model.translate(x, y);
view.repaint();
start = p;
private void updateTable()
String[] lengths = model.getLengths();
String[] squares = model.getSquares();
String[] angles = model.getAngles();
JTable table = view.getTable();
for(int j = 0; j < angles.length; j++)
table.setValueAt(lengths[j], 1, j + 1);
table.setValueAt(squares[j], 2, j + 1);
table.setValueAt(angles[j], 3, j + 1);
view.getCentroidLabel().setText("centroid location: " +
model.findCentroid());
* TriangleModel.java
* Created on 06 February 2005, 01:18
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.DefaultTableCellRenderer;
* @author Rahindra Naidoo
public class TriangleModel // (x1, y1)
{ // |\
static final int SIDES = 3; // | \
private int cx, cy; // | \
Polygon triangle; // |_ _\ (x3, y3)
int selectedIndex; // (x2, y2)
NumberFormat nf;
Line2D[] medians;
Point2D centroid;
public TriangleModel(int x1, int y1, int x2, int y2, int x3, int y3)
int[] x = new int[] { x1, x2, x3 };
int[] y = new int[] { y1, y2, y3 };
triangle = new Polygon(x, y, SIDES);
nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(1);
public boolean contains(Point p)
// Polygon.contains doesn't work well enough
return (new Area(triangle)).contains(p);
public boolean isLineSelected(Rectangle r)
Line2D line = new Line2D.Double();
for(int j = 0; j < SIDES; j++)
int[] x = triangle.xpoints;
int[] y = triangle.ypoints;
int x1 = x[j];
int y1 = y[j];
int x2 = x[(j + 1) % SIDES];
int y2 = y[(j + 1) % SIDES];
line.setLine(x1, y1, x2, y2);
if(line.intersects(r))
selectedIndex = j;
return true;
selectedIndex = -1;
return false;
* Only works for right triangle with right angle at (x2, y2)
public void moveSide(int dx, int dy, Point p)
int[] x = triangle.xpoints;
int[] y = triangle.ypoints;
switch(selectedIndex)
case 0:
x[0] += dx;
x[1] += dx;
break;
case 1:
y[1] += dy;
y[2] += dy;
break;
case 2:
double rise = y[2] - y[0];
double run = x[2] - x[0];
double slope = rise/run;
// rise / run == (y[2] - p.y) / (x[2] - p.x)
x[2] = p.x + (int)((y[2] - p.y) / slope);
// rise / run == (p.y - y[0]) / (p.x - x[0])
y[0] = p.y - (int)((p.x - x[0]) * slope);
public void translate(int dx, int dy)
triangle.translate(dx, dy);
public Polygon getTriangle()
return triangle;
public String findCentroid()
int[] x = triangle.xpoints;
int[] y = triangle.ypoints;
// construct the medians defined as the line from
// any vertex to the midpoint of the opposite line
medians = new Line2D[x.length];
for(int j = 0; j < x.length; j++)
int next = (j + 1) % x.length;
int last = (j + 2) % x.length;
Point2D vertex = new Point2D.Double(x[j], y[j]);
// get midpoint of line opposite vertex
double dx = ((double)x[last] - x[next])/2;
double dy = ((double)y[last] - y[next])/2;
Point2D oppLineCenter = new Point2D.Double(x[next] + dx,
y[next] + dy);
medians[j] = new Line2D.Double(vertex, oppLineCenter);
// centroid is located on any median 2/3 the way from the
// vertex (P1) to the midpoint (P2) on the opposite side
double[] lengths = getSideLengths();
double dx = (medians[0].getX2() - medians[0].getX1())*2/3;
double dy = (medians[0].getY2() - medians[0].getY1())*2/3;
double px = medians[0].getX1() + dx;
double py = medians[0].getY1() + dy;
//System.out.println("px = " + nf.format(px) +
// "\tpy = " + nf.format(py));
centroid = new Point2D.Double(px, py);
return "(" + nf.format(px) + ", " + nf.format(py) + ")";
public String[] getAngles()
double[] lengths = getSideLengths();
String[] vertices = new String[lengths.length];
for(int j = 0; j < lengths.length; j++)
int opp = (j + 1) % lengths.length;
int last = (j + 2) % lengths.length;
double top = lengths[j] * lengths[j] +
lengths[last] * lengths[last] -
lengths[opp] * lengths[opp];
double divisor = 2 * lengths[j] * lengths[last];
double vertex = Math.acos(top / divisor);
vertices[j] = nf.format(Math.toDegrees(vertex));
return vertices;
public String[] getLengths()
double[] lengths = getSideLengths();
String[] lengthStrs = new String[lengths.length];
for(int j = 0; j < lengthStrs.length; j++)
lengthStrs[j] = nf.format(lengths[j]);
return lengthStrs;
public String[] getSquares()
double[] lengths = getSideLengths();
String[] squareStrs = new String[lengths.length];
for(int j = 0; j < squareStrs.length; j++)
squareStrs[j] = nf.format(lengths[j] * lengths[j]);
return squareStrs;
private double[] getSideLengths()
int[] x = triangle.xpoints;
int[] y = triangle.ypoints;
double[] lengths = new double[SIDES];
for(int j = 0; j < SIDES; j++)
int next = (j + 1) % SIDES;
lengths[j] = Point.distance(x[j], y[j], x[next], y[next]);
return lengths;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.DefaultTableCellRenderer;
* TriangleView.java
* Created on 06 February 2005, 01:21
public class TriangleView extends JPanel
private TriangleModel model;
private Polygon triangle;
private JTable table;
private JLabel centroidLabel;
private boolean showConstruction;
TriangleControl control;
public TriangleView(TriangleModel model)
this.model = model;
triangle = model.getTriangle();
showConstruction = false;
control = new TriangleControl(this);
addMouseListener(control);
addMouseMotionListener(control);
public void paintComponent(Graphics g)
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.draw(triangle);
if(model.medians == null)
centroidLabel.setText("centroid location: " + model.findCentroid());
// draw medians and centroid point
if(showConstruction && !control.dragging)
g2.setPaint(Color.red);
for(int j = 0; j < 3; j++)
g2.draw(model.medians[j]);
g2.setPaint(Color.blue);
g2.fill(new Ellipse2D.Double(model.centroid.getX() - 2,
model.centroid.getY() - 2, 4, 4));
public TriangleModel getModel()
return model;
public JTable getTable()
return table;
public JLabel getCentroidLabel()
return centroidLabel;
public JPanel getUIPanel()
JCheckBox showCon = new JCheckBox("show construction");
showCon.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
boolean state = ((JCheckBox)e.getSource()).isSelected();
showConstruction = state;
repaint();
JPanel panel = new JPanel();
panel.add(showCon);
return panel;
public JPanel getTablePanel()
String[] headers = new String[] { "", "", "", "" };
// row and column data labels
String[] rowHeaders = {
"sides", "lengths", "squares", "angles", "degrees"
String[] sidesRow = { "vertical", "horizontal", "hypotenuse" };
String[] anglesRow = { "hyp to ver", "ver to hor", "hor to hyp" };
// collect data from model
String[] angles = model.getAngles();
String[] lengths = model.getLengths();
String[] squares = model.getSquares();
String[][] allData = { sidesRow, lengths, squares, anglesRow, angles };
int rows = 5;
int cols = 4;
Object[][] data = new Object[rows][cols];
for(int row = 0; row < rows; row++)
data[row][0] = rowHeaders[row];
for(int col = 1; col < cols; col++)
data[row][col] = allData[row][col - 1];
table = new JTable(data, headers)
public boolean isCellEditable(int row, int col)
return false;
DefaultTableCellRenderer renderer =
(DefaultTableCellRenderer)table.getDefaultRenderer(String.class);
renderer.setHorizontalAlignment(JLabel.CENTER);
centroidLabel = new JLabel("centroid location: ", JLabel.CENTER);
Dimension d = centroidLabel.getPreferredSize();
d.height = table.getRowHeight();
centroidLabel.setPreferredSize(d);
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(BorderFactory.createTitledBorder("triangle data"));
panel.add(table);
panel.add(centroidLabel, "South");
return panel;
}PLEASE HELP ---- Also does any one know how to draw a Triangle on a screen which can be controlled by a JSlider such that as and whenits incremented the triangle increase and vice versa... I need to prove Similarity in triangles using A Jslider that controls one triangle while the other triangle is Still on screenSharan,
The code given was part of the assignment and you are supposed to make the changes for your part right?
Please give details of what you have done so far and not expect us to do your assignment for you. We'll be glad to help answer questions and point to the right direction, but giving us the entire assignment and saying, very nicely I might add, "Please do it for me." Just seems to make a mockery of the hours, days, and years that many of us has spent earning our degrees and learning our skills.
Work on it and ask specific questions with examples of what you have done and you'll get a much better response. -
Hi...everyone
Please anyone can post me the .vi program for verification of superposition theorem for a resistive circuit. I am using labview 8.5.1 on windows xp platform.
I have a circuit on the NI-ELVIS prototyping board and that i have to interface to the Labview. At least tell me how i can proceed for making this front panel...
plzzzz its urgent
Thank you.......This appears to be a homework problem. If the above link does not answer your question(s) then please post back with specific questions. We will not do your homework for you, but we can provide hints.
-
Determining spectral density of poisson process (carson theorem)
Has anyone ever determined code for working out the spectral density (or
equivalent) of a Poisson process, based on Carson theorem (or a variant
thereof)? It doesn't have to be in Labview, but that would be the easiest (or VB).Message Edited by Jo on 05-01-2005 11:34 PM
Maybe you are looking for
-
White Macbook: discolored/shiny palmrests
I've had my white Macbook for about six months. Very quickly the palmrests became discolored and grimy. Glass cleaner has done a great job getting rid of the dirt, but the palmrests are still shiny - you can really see this when you look at them at a
-
ITunes crashing when connecting to the store on Windows 8.1
Hello, I had iTunes crashing when connecting to the iTunes Store with an Apple ID. I tried unsucessfully all the solutions posted on the many threads of people having the same issue. So I decided to reinstall Windows. A clean Windows 8.1 install from
-
Statistical WBS Element - do we need to set as Account Assignment Element?
Hi, I would like to know if I define the WBS element to be statistical (statistical ticked in Control tab) and would want to have posting. Do I need to set it as account assignment element? (I noticed system is not allowing me to post if I do not s
-
Internet Explorer 9, 10, or 11
Internet Explorer 9, 10 or 11 is not showing up in my updates to deploy. I have Updates and Update Rollups selected under Classifications in Software Update Point Component and I'm getting Internet Explorer updates, but not the application IE. I ha
-
Problems with OS 10.4.3
Hello, Yesterday I installed the new update to OS 10.4.3, and now my system is running slowly. I know its not my hardware, because I just got my Power Book last week. I has 2 GB worth of ram, and it was running wonderfully even with the Adobe CS2 and