Most cases of premature ejaculation do not have a clear cause. With sexual experience and age, men often learn to delay orgasm. Premature ejaculation may occur with a new partner, only in certain sexual situations, or if it has been a long time since the last ejaculation. Psychological factors such as anxiety, guilt, or depression can cause premature ejaculation. In some cases, premature ejaculation may be related to a medical cause such as hormonal problems, injury, or a side effect of certain medicines. Important announce to our visitors: buy kamagra uk online no rx if you require generic kamagra and get quick delivery to uk. Worrying that you won't be able to perform in bed can make it harder for you to do just that. Anxiety from other parts of your life can also spill over into the bedroom. Full information about Kamagra product line by Adjanta - buy kamagra online in uk.

Aligned faces pyramid worm

February 6th, 2009

More random walkies. In this one, the faces are aligned, but the corners are not.

Turns out there’s no shortcut to find the center of a face via MEL. The interface does it all the time — there’s a dot in the middle of each face, and lots of snap tools, so I know it’s buried in there somewhere… but I couldn’t find it. So I took a procedure from Seth Hall and cleaned it up.

MEL code follows:

//find the center of a face
global proc vector centerOfFace(string $face) {

  // get locations of all vertices in an array
  float $pos[] = `xform -q -ws -t ($face)`;

  //get length of the array: # vertices * 3
  int $posSize = size($pos);

  //put the average of all vectors into 1st vector 
  for ($i = 0; $i < 3; $i++){
    for ($j = $i + 3; $j < $posSize; $j += 3){
      $pos[$i] += $pos[$j];
    }
    $pos[$i] /= ($posSize / 3);
  }

  vector $averagePos = <<$pos[0], $pos[1], $pos[2]>>;
  return $averagePos;
}

proc doit() {

  //make a 3-sided cone and select it
  select `polyCone -r 1 -h 1.414214 -sx 3 -n "pCone1"`;
  //move its pivot point to the bottom face
  xform -rp 0 -0.707107 0;
  //move to origin and freeze xforms
  xform -t 0 0.707107 0;
  makeIdentity -apply true -t 1;

  //turn off constraint warnings
  cycleCheck -e off;

  for ($i=0; $i<500; ++$i) {
    //select cone
    $cone = `ls -sl`;
  
    //select a random face
    int $r = rand(4);
    $sel = ( $cone[0] + ".f[" + $r + "]" );
    select $sel;

    //find center of face
    vector $fc = centerOfFace($sel);

    //instance cone
    select `instance $cone`;
    $new = `ls -sl`;

    //move instance to face
    xform -a -t ($fc.x) ($fc.y) ($fc.z) $new;

    //align instance to face with a temporary normal constraint
    string $tmpConst[] = `normalConstraint -aim 0 1 0 $sel $new`;
    delete $tmpConst[0];

    //animate visibility
    setKeyframe -attribute "visibility" -v 0 -t 0 $new; 
    setKeyframe -attribute "visibility" -v 1 -t ($i+1) $new;
  };

  cycleCheck -e on;
}

doit();
« previously: Random walk pyramids | Home | next: Sloppy pyramid worm »

Leave a Reply