2
GeoGebra - Dynamic Mathematics for Everyone
3
http://www.geogebra.org
5
This file is part of GeoGebra.
7
This program is free software; you can redistribute it and/or modify it
8
under the terms of the GNU General Public License as published by
9
the Free Software Foundation.
16
* Created on 11. November 2001, 21:37
19
package geogebra.kernel;
28
public class AlgoVertex extends AlgoElement {
33
private static final long serialVersionUID = 1L;
34
private GeoConic c; // input
35
private GeoPoint [] vertex; // output
37
transient private double temp1, temp2;
39
private GeoVec2D [] eigenvec;
41
AlgoVertex(Construction cons, String label, GeoConic c) {
43
GeoElement.setLabels(label, vertex);
46
AlgoVertex(Construction cons, String [] labels, GeoConic c) {
48
GeoElement.setLabels(labels, vertex);
51
AlgoVertex(Construction cons, GeoConic c) {
54
vertex = new GeoPoint[4];
55
for (int i=0; i < vertex.length; i++) {
56
vertex[i] = new GeoPoint(cons);
57
// only first undefined point should be shown in algebra window
58
vertex[i].showUndefinedInAlgebraView(i == 0);
61
setInputOutput(); // for AlgoElement
64
eigenvec = c.eigenvec;
69
protected String getClassName() {
74
public void setInputOutput() {
75
input = new GeoElement[1];
79
setDependencies(); // done by AlgoElement
82
GeoConic getConic() { return c; }
83
GeoPoint [] getVertex() { return vertex; }
85
protected final void compute() {
87
case GeoConic.CONIC_CIRCLE:
88
case GeoConic.CONIC_ELLIPSE:
89
temp1 = c.halfAxes[0] * eigenvec[0].x;
90
temp2 = c.halfAxes[0] * eigenvec[0].y;
91
vertex[0].setCoords(b.x - temp1, b.y - temp2, 1.0);
92
vertex[1].setCoords(b.x + temp1, b.y + temp2, 1.0);
94
temp1 = c.halfAxes[1] * eigenvec[1].x;
95
temp2 = c.halfAxes[1] * eigenvec[1].y;
96
vertex[2].setCoords( b.x - temp1, b.y - temp2, 1.0);
97
vertex[3].setCoords( b.x + temp1, b.y + temp2, 1.0);
100
case GeoConic.CONIC_HYPERBOLA:
101
temp1 = c.halfAxes[0] * eigenvec[0].x;
102
temp2 = c.halfAxes[0] * eigenvec[0].y;
103
vertex[0].setCoords(b.x - temp1, b.y - temp2, 1.0d);
104
vertex[1].setCoords(b.x + temp1, b.y + temp2, 1.0d);
105
// third and fourth vertex undefined
106
vertex[2].setUndefined();
107
vertex[3].setUndefined();
110
case GeoConic.CONIC_PARABOLA:
111
case GeoConic.CONIC_PARALLEL_LINES:
112
case GeoConic.CONIC_DOUBLE_LINE:
113
vertex[0].setCoords(b.x, b.y, 1.0);
115
// other vertex undefined
116
vertex[1].setUndefined();
117
vertex[2].setUndefined();
118
vertex[3].setUndefined();
123
vertex[0].setUndefined();
124
vertex[1].setUndefined();
125
vertex[2].setUndefined();
126
vertex[3].setUndefined();
130
public final String toString() {
131
StringBuffer sb = new StringBuffer();
132
// Michael Borcherds 2008-03-30
133
// simplified to allow better Chinese translation
134
sb.append(app.getPlain("VertexOfA",c.getLabel()));
136
return sb.toString();
2
GeoGebra - Dynamic Mathematics for Everyone
3
http://www.geogebra.org
5
This file is part of GeoGebra.
7
This program is free software; you can redistribute it and/or modify it
8
under the terms of the GNU General Public License as published by
9
the Free Software Foundation.
16
* Created on 11. November 2001, 21:37
19
package geogebra.kernel;
28
public class AlgoVertex extends AlgoElement {
33
private static final long serialVersionUID = 1L;
34
private GeoConic c; // input
35
private GeoPoint [] vertex; // output
37
transient private double temp1, temp2;
39
private GeoVec2D [] eigenvec;
41
AlgoVertex(Construction cons, String label, GeoConic c) {
43
GeoElement.setLabels(label, vertex);
46
AlgoVertex(Construction cons, String [] labels, GeoConic c) {
48
GeoElement.setLabels(labels, vertex);
51
AlgoVertex(Construction cons, GeoConic c) {
54
vertex = new GeoPoint[4];
55
for (int i=0; i < vertex.length; i++) {
56
vertex[i] = new GeoPoint(cons);
57
// only first undefined point should be shown in algebra window
58
vertex[i].showUndefinedInAlgebraView(i == 0);
61
setInputOutput(); // for AlgoElement
64
eigenvec = c.eigenvec;
69
public String getClassName() {
74
public void setInputOutput() {
75
input = new GeoElement[1];
79
setDependencies(); // done by AlgoElement
82
GeoConic getConic() { return c; }
83
GeoPoint [] getVertex() { return vertex; }
85
protected final void compute() {
87
case GeoConic.CONIC_CIRCLE:
88
case GeoConic.CONIC_ELLIPSE:
89
temp1 = c.halfAxes[0] * eigenvec[0].x;
90
temp2 = c.halfAxes[0] * eigenvec[0].y;
91
vertex[0].setCoords(b.x - temp1, b.y - temp2, 1.0);
92
vertex[1].setCoords(b.x + temp1, b.y + temp2, 1.0);
94
temp1 = c.halfAxes[1] * eigenvec[1].x;
95
temp2 = c.halfAxes[1] * eigenvec[1].y;
96
vertex[2].setCoords( b.x - temp1, b.y - temp2, 1.0);
97
vertex[3].setCoords( b.x + temp1, b.y + temp2, 1.0);
100
case GeoConic.CONIC_HYPERBOLA:
101
temp1 = c.halfAxes[0] * eigenvec[0].x;
102
temp2 = c.halfAxes[0] * eigenvec[0].y;
103
vertex[0].setCoords(b.x - temp1, b.y - temp2, 1.0d);
104
vertex[1].setCoords(b.x + temp1, b.y + temp2, 1.0d);
105
// third and fourth vertex undefined
106
vertex[2].setUndefined();
107
vertex[3].setUndefined();
110
case GeoConic.CONIC_PARABOLA:
111
case GeoConic.CONIC_PARALLEL_LINES:
112
case GeoConic.CONIC_DOUBLE_LINE:
113
vertex[0].setCoords(b.x, b.y, 1.0);
115
// other vertex undefined
116
vertex[1].setUndefined();
117
vertex[2].setUndefined();
118
vertex[3].setUndefined();
123
vertex[0].setUndefined();
124
vertex[1].setUndefined();
125
vertex[2].setUndefined();
126
vertex[3].setUndefined();
130
public final String toString() {
131
// Michael Borcherds 2008-03-30
132
// simplified to allow better Chinese translation
133
return app.getPlain("VertexOfA",c.getLabel());