Revision 12ecac18
Added by Leszek Koltunski over 6 years ago
| src/main/java/org/distorted/library/type/Dynamic.java | ||
|---|---|---|
| 150 | 150 |
|
| 151 | 151 |
protected Vector<VectorCache> vc; |
| 152 | 152 |
protected VectorCache tmp1, tmp2; |
| 153 |
protected float mConvexity; |
|
| 153 | 154 |
|
| 154 | 155 |
private float[] buf; |
| 155 | 156 |
private float[] old; |
| ... | ... | |
| 181 | 182 |
mDimension = dimension; |
| 182 | 183 |
mSegment = -1; |
| 183 | 184 |
mLastPos = -1; |
| 184 |
mAccessType = ACCESS_TYPE_RANDOM; |
|
| 185 |
mAccessType= ACCESS_TYPE_RANDOM; |
|
| 186 |
mConvexity = 1.0f; |
|
| 185 | 187 |
|
| 186 |
mTimeOffset = 0;
|
|
| 187 |
mSetOffset = true;
|
|
| 188 |
mTimeOffset= 0; |
|
| 189 |
mSetOffset = true; |
|
| 188 | 190 |
|
| 189 | 191 |
baseV = new float[mDimension][mDimension]; |
| 190 | 192 |
buf = new float[mDimension]; |
| ... | ... | |
| 588 | 590 |
return mDuration; |
| 589 | 591 |
} |
| 590 | 592 |
|
| 593 |
|
|
| 594 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 595 |
/** |
|
| 596 |
* @param convexity If set to the default (1.0f) then interpolation between 4 points |
|
| 597 |
* (1,0) (0,1) (-1,0) (0,-1) will be the natural circle centered at (0,0) with radius 1. |
|
| 598 |
* The less it is, the less convex the circle becomes, ultimately when convexity=0.0f |
|
| 599 |
* then the interpolation shape will be straight lines connecting the four points. |
|
| 600 |
* Further setting this to negative values will make the shape concave. |
|
| 601 |
* Valid values: all floats. (although probably only something around (0,2) actually |
|
| 602 |
* makes sense) |
|
| 603 |
*/ |
|
| 604 |
public void setConvexity(float convexity) |
|
| 605 |
{
|
|
| 606 |
if( mConvexity!=convexity ) |
|
| 607 |
{
|
|
| 608 |
mConvexity = convexity; |
|
| 609 |
cacheDirty = true; |
|
| 610 |
} |
|
| 611 |
} |
|
| 612 |
|
|
| 613 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 614 |
/** |
|
| 615 |
* @return See {@link Dynamic#setConvexity(float)}
|
|
| 616 |
*/ |
|
| 617 |
public float getConvexity() |
|
| 618 |
{
|
|
| 619 |
return mConvexity; |
|
| 620 |
} |
|
| 621 |
|
|
| 591 | 622 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 592 | 623 |
/** |
| 593 | 624 |
* Sets the access type this Dynamic will be working in. |
| src/main/java/org/distorted/library/type/Dynamic1D.java | ||
|---|---|---|
| 57 | 57 |
|
| 58 | 58 |
if( q>1 ) |
| 59 | 59 |
{
|
| 60 |
tmp1.tangent[0] = nx+px/q;
|
|
| 60 |
tmp1.tangent[0] = mConvexity*(nx+px/q);
|
|
| 61 | 61 |
} |
| 62 | 62 |
else |
| 63 | 63 |
{
|
| 64 |
tmp1.tangent[0] = px+nx*q;
|
|
| 64 |
tmp1.tangent[0] = mConvexity*(px+nx*q);
|
|
| 65 | 65 |
} |
| 66 | 66 |
} |
| 67 | 67 |
else |
| src/main/java/org/distorted/library/type/Dynamic2D.java | ||
|---|---|---|
| 59 | 59 |
|
| 60 | 60 |
if( q>1 ) |
| 61 | 61 |
{
|
| 62 |
tmp1.tangent[0] = nx+px/q;
|
|
| 63 |
tmp1.tangent[1] = ny+py/q;
|
|
| 62 |
tmp1.tangent[0] = mConvexity*(nx+px/q);
|
|
| 63 |
tmp1.tangent[1] = mConvexity*(ny+py/q);
|
|
| 64 | 64 |
} |
| 65 | 65 |
else |
| 66 | 66 |
{
|
| 67 |
tmp1.tangent[0] = px+nx*q;
|
|
| 68 |
tmp1.tangent[1] = py+ny*q;
|
|
| 67 |
tmp1.tangent[0] = mConvexity*(px+nx*q);
|
|
| 68 |
tmp1.tangent[1] = mConvexity*(py+ny*q);
|
|
| 69 | 69 |
} |
| 70 | 70 |
} |
| 71 | 71 |
else |
| src/main/java/org/distorted/library/type/Dynamic3D.java | ||
|---|---|---|
| 61 | 61 |
|
| 62 | 62 |
if( q>1 ) |
| 63 | 63 |
{
|
| 64 |
tmp1.tangent[0] = nx+px/q;
|
|
| 65 |
tmp1.tangent[1] = ny+py/q;
|
|
| 66 |
tmp1.tangent[2] = nz+pz/q;
|
|
| 64 |
tmp1.tangent[0] = mConvexity*(nx+px/q);
|
|
| 65 |
tmp1.tangent[1] = mConvexity*(ny+py/q);
|
|
| 66 |
tmp1.tangent[2] = mConvexity*(nz+pz/q);
|
|
| 67 | 67 |
} |
| 68 | 68 |
else |
| 69 | 69 |
{
|
| 70 |
tmp1.tangent[0] = px+nx*q;
|
|
| 71 |
tmp1.tangent[1] = py+ny*q;
|
|
| 72 |
tmp1.tangent[2] = pz+nz*q;
|
|
| 70 |
tmp1.tangent[0] = mConvexity*(px+nx*q);
|
|
| 71 |
tmp1.tangent[1] = mConvexity*(py+ny*q);
|
|
| 72 |
tmp1.tangent[2] = mConvexity*(pz+nz*q);
|
|
| 73 | 73 |
} |
| 74 | 74 |
} |
| 75 | 75 |
else |
| src/main/java/org/distorted/library/type/Dynamic4D.java | ||
|---|---|---|
| 63 | 63 |
|
| 64 | 64 |
if( q>1 ) |
| 65 | 65 |
{
|
| 66 |
tmp1.tangent[0] = nx+px/q;
|
|
| 67 |
tmp1.tangent[1] = ny+py/q;
|
|
| 68 |
tmp1.tangent[2] = nz+pz/q;
|
|
| 69 |
tmp1.tangent[3] = nw+pw/q;
|
|
| 66 |
tmp1.tangent[0] = mConvexity*(nx+px/q);
|
|
| 67 |
tmp1.tangent[1] = mConvexity*(ny+py/q);
|
|
| 68 |
tmp1.tangent[2] = mConvexity*(nz+pz/q);
|
|
| 69 |
tmp1.tangent[3] = mConvexity*(nw+pw/q);
|
|
| 70 | 70 |
} |
| 71 | 71 |
else |
| 72 | 72 |
{
|
| 73 |
tmp1.tangent[0] = px+nx*q;
|
|
| 74 |
tmp1.tangent[1] = py+ny*q;
|
|
| 75 |
tmp1.tangent[2] = pz+nz*q;
|
|
| 76 |
tmp1.tangent[3] = pw+nw*q;
|
|
| 73 |
tmp1.tangent[0] = mConvexity*(px+nx*q);
|
|
| 74 |
tmp1.tangent[1] = mConvexity*(py+ny*q);
|
|
| 75 |
tmp1.tangent[2] = mConvexity*(pz+nz*q);
|
|
| 76 |
tmp1.tangent[3] = mConvexity*(pw+nw*q);
|
|
| 77 | 77 |
} |
| 78 | 78 |
} |
| 79 | 79 |
else |
| src/main/java/org/distorted/library/type/Dynamic5D.java | ||
|---|---|---|
| 65 | 65 |
|
| 66 | 66 |
if( q>1 ) |
| 67 | 67 |
{
|
| 68 |
tmp1.tangent[0] = nx+px/q;
|
|
| 69 |
tmp1.tangent[1] = ny+py/q;
|
|
| 70 |
tmp1.tangent[2] = nz+pz/q;
|
|
| 71 |
tmp1.tangent[3] = nw+pw/q;
|
|
| 72 |
tmp1.tangent[4] = nv+pv/q;
|
|
| 68 |
tmp1.tangent[0] = mConvexity*(nx+px/q);
|
|
| 69 |
tmp1.tangent[1] = mConvexity*(ny+py/q);
|
|
| 70 |
tmp1.tangent[2] = mConvexity*(nz+pz/q);
|
|
| 71 |
tmp1.tangent[3] = mConvexity*(nw+pw/q);
|
|
| 72 |
tmp1.tangent[4] = mConvexity*(nv+pv/q);
|
|
| 73 | 73 |
} |
| 74 | 74 |
else |
| 75 | 75 |
{
|
| 76 |
tmp1.tangent[0] = px+nx*q;
|
|
| 77 |
tmp1.tangent[1] = py+ny*q;
|
|
| 78 |
tmp1.tangent[2] = pz+nz*q;
|
|
| 79 |
tmp1.tangent[3] = pw+nw*q;
|
|
| 80 |
tmp1.tangent[4] = pv+nv*q;
|
|
| 76 |
tmp1.tangent[0] = mConvexity*(px+nx*q);
|
|
| 77 |
tmp1.tangent[1] = mConvexity*(py+ny*q);
|
|
| 78 |
tmp1.tangent[2] = mConvexity*(pz+nz*q);
|
|
| 79 |
tmp1.tangent[3] = mConvexity*(pw+nw*q);
|
|
| 80 |
tmp1.tangent[4] = mConvexity*(pv+nv*q);
|
|
| 81 | 81 |
} |
| 82 | 82 |
} |
| 83 | 83 |
else |
Also available in: Unified diff
Add the 'convexity' param to Dynamics and the Dynamic app.