/* Copyright 2006 Rene Grothmann, modified by Eric Hakenholz This file is part of C.a.R. software. C.a.R. is a free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License. C.a.R. is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ package rene.zirkel.objects; // file: LineCircleIntersectionObject.java import rene.util.xml.XmlWriter; import rene.zirkel.construction.Construction; public class AxisFunctionIntersectionObject extends IntersectionObject { public AxisFunctionIntersectionObject(final Construction c, final AxisObject P1, final FunctionObject P2, final boolean first) { super(c, P1, P2); First = first; validate(); } // public void updateCircleDep () // { ((QuadricObject)P2).addDep(this); // ((PrimitiveLineObject)P1).addDep(this); // } // public void validate () // { boolean oldvalid=Valid; // if (!P1.valid() || !P2.valid()) Valid=false; // else Valid=true; // if (!Valid) return; // // Coordinates c=AxisObject.intersect( // (PrimitiveLineObject)P1,(FunctionObject)P2); // // if (c==null) // { if (oldvalid && getConstruction().shouldSwitch()) // { doSwitch(); // if (!getConstruction().noteSwitch()) Switched=false; // } // else if (oldvalid && Alternate && Away==null && // getConstruction().canAlternate()) // { First=!First; // } // Valid=false; return; // } // double X1,Y1; // if (getAway()!=null) // { double x=getAway().getX(),y=getAway().getY(); // double r=(x-c.X)*(x-c.X)+(y-c.Y)*(y-c.Y); // double r1=(x-c.X1)*(x-c.X1)+(y-c.Y1)*(y-c.Y1); // boolean flag=(r>r1); // if (!StayAway) flag=!flag; // if (flag) // { // setXY(c.X,c.Y); // X1=c.X1; Y1=c.Y1; // } // else // { // setXY(c.X1,c.Y1); // X1=c.X; Y1=c.Y; // } // } // else // { if (First) { setXY(c.X,c.Y); X1=c.X1; Y1=c.Y1; } // else { setXY(c.X1,c.Y1); X1=c.X; Y1=c.Y; } // } // if (Restricted) // { // // if (!((PrimitiveLineObject)P1).contains(X,Y)) { // if (!((PrimitiveLineObject)P1).contains(X1,Y1)){ // Valid=false; // }else{ // setXY(X1,Y1); // } // // } // // // } // } @Override public void printArgs(final XmlWriter xml) { super.printArgs(xml); if (First) xml.printArg("which", "first"); else xml.printArg("which", "second"); } @Override public boolean isSwitchable() { return true; } @Override public boolean canAlternate() { return true; } }