use of artisynth.core.mechmodels.MotionTargetComponent in project artisynth_core by artisynth.
the class MotionTargetComponentAgent method selectionChanged.
public void selectionChanged(SelectionEvent e) {
ModelComponent c = e.getLastAddedComponent();
if (isValidTarget(c)) {
MotionTargetComponent comp = (MotionTargetComponent) c;
if (myState == State.SelectingTargets && !myController.getMotionSources().contains(comp) && !myController.getMotionTargets().contains(comp)) {
myController.addMotionTarget(comp, 1.0);
DoubleField widget = createTargetWidget(comp, 1.0);
myTargetPanel.addWidget(widget);
myTargetPanel.mapWidgetToComponent(widget, comp);
myTargetPanel.revalidate();
myTargetPanel.repaint();
}
// else if (myExciter.findTarget(ex) != -1)
// { mySelectedTargets.add (ex);
// }
}
}
use of artisynth.core.mechmodels.MotionTargetComponent in project artisynth_core by artisynth.
the class MotionTargetTerm method createVelocityJacobian.
private void createVelocityJacobian() {
myVelJacobian = myMech.createVelocityJacobian();
for (int i = 0; i < mySources.size(); i++) {
MotionTargetComponent target = mySources.get(i);
target.addTargetJacobian(myVelJacobian, i);
}
// fold attachments into targets on dynamic components
// (same as constraint jacobians)
myMech.reduceVelocityJacobian(myVelJacobian);
}
use of artisynth.core.mechmodels.MotionTargetComponent in project artisynth_core by artisynth.
the class MotionTargetTerm method updateTargetVelocityVec.
private void updateTargetVelocityVec() {
if (myTargetVel == null || myTargetVel.size() != myTargetVelSize)
myTargetVel = new VectorNd(myTargetVelSize);
double[] buf = myTargetVel.getBuffer();
int idx = 0;
for (int i = 0; i < myTargets.size(); i++) {
MotionTargetComponent target = myTargets.get(i);
if (target instanceof Point) {
Vector3d vel = ((Point) target).getVelocity();
buf[idx++] = vel.x;
buf[idx++] = vel.y;
buf[idx++] = vel.z;
} else if (target instanceof Frame) {
Twist vel = ((Frame) target).getVelocity();
buf[idx++] = vel.v.x;
buf[idx++] = vel.v.y;
buf[idx++] = vel.v.z;
buf[idx++] = vel.w.x;
buf[idx++] = vel.w.y;
buf[idx++] = vel.w.z;
}
}
}
use of artisynth.core.mechmodels.MotionTargetComponent in project artisynth_core by artisynth.
the class MotionTargetTerm method fixTargetPositions.
private void fixTargetPositions() {
for (MotionTargetComponent comp : myTargets) {
if (comp instanceof Point) {
Point p = (Point) comp;
p.setPosition(p.getTargetPosition());
p.setVelocity(p.getTargetVelocity());
} else if (comp instanceof Frame) {
Frame f = (Frame) comp;
f.setVelocity(f.getTargetVelocity());
f.setPose(f.getTargetPose());
}
}
}
use of artisynth.core.mechmodels.MotionTargetComponent in project artisynth_core by artisynth.
the class MotionTargetTerm method updateWeightsVector.
private void updateWeightsVector() {
myTargetWgts = new VectorNd(myTargetVelSize);
int idx = 0;
for (int t = 0; t < mySources.size(); t++) {
MotionTargetComponent target = mySources.get(t);
double w = myTargetWeights.get(t);
if (target instanceof Point) {
for (int i = 0; i < POINT_VEL_SIZE; i++) {
myTargetWgts.set(idx++, w);
}
} else if (target instanceof Frame) {
for (int i = 0; i < FRAME_VEL_SIZE; i++) {
myTargetWgts.set(idx++, w);
}
}
}
}
Aggregations