igeo
Class ITriangleWall
java.lang.Object
igeo.IObject
igeo.IAgent
igeo.IWall
igeo.ITriangleWall
- All Implemented Interfaces:
- IDynamics, ISubobject
public class ITriangleWall
- extends IWall
Infinite plane wall to bounce particle
- Author:
- Satoru Sugihara
Methods inherited from class igeo.IWall |
elast, elasticity, fric, friction, hide, isTargetClass, layer, name, show, targetClass, targetClass |
Methods inherited from class igeo.IAgent |
addDynamics, alive, clr, clr, clr, clr, clr, clr, clr, clr, clr, clr, clr, clr, clr, clr, clr, clr, del, del, deletDynamics, deleteDynamics, deleteDynamics, duration, duration, dynamicsNum, getDynamics, hsb, hsb, hsb, hsb, initAgent, interact, interact, localDynamics, parent, parent, postupdate, preinteract, preupdate, removeTarget, removeTarget, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setColor, setHSBColor, setHSBColor, setHSBColor, setHSBColor, target, target, targetNum, targets, time, time, update, updateGraphic, updateTarget, weight, weight |
Methods inherited from class igeo.IObject |
addUserData, addUserData, alpha, alphaInt, attr, attr, attr, awtColor, blue, blueInt, castStringHashMap, clearDynamics, clearGraphics, clr, clr, clr, clr, clr, cp, createGraphic, defaultAttribute, deleteGraphic, dup, getAWTColor, getColor, getGraphic, getGraphic, getParameter, graphicsNum, gray, grayInt, green, greenInt, greyInt, initGraphic, initObject, isValid, isVisible, layer, layer, name, red, redInt, resetGraphic, server, setColor, setColor, setColor, setColor, setParameter, syncColor, syncGraphic, syncVisibility, syncWeight, userData, userData, userData, userDataNum, visible, weight |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
pts
public IVecI[] pts
dir1
public IVec dir1
dir2
public IVec dir2
ITriangleWall
public ITriangleWall(IVecI pt1,
IVecI pt2,
IVecI pt3)
ITriangleWall
public ITriangleWall(IVecI[] pts)
ITriangleWall
public ITriangleWall(ITriangleWall wall)
fric
public ITriangleWall fric(double fric)
- Overrides:
fric
in class IWall
friction
public ITriangleWall friction(double fric)
- Overrides:
friction
in class IWall
elast
public ITriangleWall elast(double el)
- Overrides:
elast
in class IWall
elasticity
public ITriangleWall elasticity(double el)
- Overrides:
elasticity
in class IWall
distToCrossing
public double distToCrossing(IParticleI particle)
- in case somebody needs to measure distance to the wall. if it misses to intersect, it returns -1.
- Overrides:
distToCrossing
in class IWall
intersect
public IVec intersect(IParticleI particle)
intersect
public IVec intersect(IVec pt1,
IVec pt2)
- Overrides:
intersect
in class IWall
isInside
public boolean isInside(IVec pt)
- check if the point is inside the triangle
isInsideLocal
public boolean isInsideLocal(IVec pt)
- check if the point is inside the triangle ralatively from planePt
isCrossing
public boolean isCrossing(IParticleI particle)
- Overrides:
isCrossing
in class IWall
isCrossing
public boolean isCrossing(IVec pt1,
IVec pt2)
- Overrides:
isCrossing
in class IWall
closerIntersection
public IVec closerIntersection(IVec pt1,
IVec pt2,
java.util.ArrayList<IDynamics> agents)
- Overrides:
closerIntersection
in class IWall
postinteract
public void postinteract(java.util.ArrayList<IDynamics> agents)
- Description copied from interface:
IDynamics
- executed after interact(ArrayList). behavior can be changed by IConfig.enablePostinteract and IConfig.loopPostinteract.
If IConfig.loopPostinteract is false, preupdate is executed before post interact (updated 2012/08/26).
- Specified by:
postinteract
in interface IDynamics
- Overrides:
postinteract
in class IWall
bounce
public void bounce(IParticleI particle,
java.util.ArrayList<IDynamics> agents)
- Calculate bouncing behavior of particle.
With IConfig.checkAdjacentWalls=true, it checks other walls if the particle could collide into
others within the same time frame and find which one to collide first.
When bouncing, a particle doesn't necesarily stop at the intersection point on the wall because
within one time frame, the particle moves distance of particle.vel() * IConfig.updateRate and
IWall move the corresponding distance after bouncing. So if a particle is fast, user might not
see the moment the particle is touching the wall. Instead, if the particle inherets ITrajectoryI,
IWall inserts an intersection point into the trajectory curve.
- Overrides:
bounce
in class IWall