Dear all:
i will be glad if any one can carefully check this code and tell me what is
wrong with it. it work, or print out anything when i instatiates it.
thanks,
Isaac
class PickBehavia extends Behavior
{
//WakeupCriterion mouseCriteria;
BranchGroup branchGroup;
Canvas3D canvas3D;
WakeupOr mouseCriteria;
public PickBehavia(BranchGroup branchGroup, Canvas3D canvas3D)
{
this.branchGroup = branchGroup;
this.canvas3D = canvas3D;
}
public void initialize()
{
WakeupCriterion [] mouseEvents = new WakeupCriterion[3];
mouseEvents[0] = new WakeupOnAWTEvent( MouseEvent.MOUSE_DRAGGED );
mouseEvents[1] = new WakeupOnAWTEvent( MouseEvent.MOUSE_PRESSED );
mouseEvents[2] = new WakeupOnAWTEvent( MouseEvent.MOUSE_RELEASED );
mouseCriteria = new WakeupOr( mouseEvents ); // member data
wakeupOn( mouseCriteria);
//mouseCriterion = new
WakeupOnAWTEvent(MouseEvent.MOUSE_PRESSED);
System.out.println("event entered");
System.out.println("Initialize");
//wakeupOn (mouseCriterion);
}
public void processStimulus (Enumeration criteria)
{
SceneGraphPath sceneGraphPath=null;
AWTEvent[] event =
((WakeupOnAWTEvent)criteria.nextElement()).getAWTEvent();
for (int i=0; i<event.length; i++)
{
int x = ((MouseEvent)event[i]).getX();
int y = ((MouseEvent)event[i]).getY();
System.out.println("x="+" "+x);
PickRay pickRay = generatePickRay(x,y);
sceneGraphPath = branchGroup.pickAny(pickRay);
Cone someCone = (Cone)sceneGraphPath.getObject();
float Ht=someCone.getHeight();
System.out.println("cone height="+" "+Ht);
//@@@ the formula for prop-retrieval.
//float calcx = (float)baseLine+Ht;
//float prop = calcx/yaxis;
//for (int b=0;b<allProtein.size();b++)
//{
//Protein tein
=(Protein)allProtein.elementAt(b);
//if(isAproximatelyEqual(prop,tein.proportion,0.5f))
//{
//tellUser(tein.getName());
//}
//}
}
System.out.println("generate pickray");
System.out.println(sceneGraphPath);
wakeupOn(mouseCriteria);
}
public PickRay generatePickRay(int xpos, int ypos)
{
Transform3D motion=new Transform3D();
Point3d eyePosn = new Point3d();
Point3d mousePosn = new Point3d();
Vector3d mouseVec=new Vector3d();
canvas3D.getCenterEyeInImagePlate(eyePosn);
canvas3D.getPixelLocationInImagePlate(xpos,ypos,mousePosn);
canvas3D.getImagePlateToVworld(motion);
motion.transform(eyePosn);
motion.transform(mousePosn);
mouseVec.sub(mousePosn, eyePosn);
mouseVec.normalize();
return new PickRay(eyePosn, mouseVec);
}
public boolean isAproximatelyEqual(float one,float two,float three)
{
float four =(float)two-one;
if(Math.abs(four)<three)
return true;
else
return false;
}
private void tellUser(String message)
{
JOptionPane.showMessageDialog(null, message+"\n"+":...");
}
} //class
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".