Thanks for all the replies. It's much appreciated. I'll grind through them 
tomorrow at work.




On 17 Jul 2013, at 19:26, Vladimir Jankijevic <vladi...@elefantstudios.ch> 
wrote:

> something we recorded last year while I was in NY: https://vimeo.com/44951318
> maybe this helps :)
> 
> Cheers
> Vladimir
> 
> 
> On Wed, Jul 17, 2013 at 2:05 PM, Vincent Ullmann 
> <vincent.ullm...@googlemail.com> wrote:
> Quote Paul:
> 
>     {
>     Ive managed to get barycentric interpolation working for a flat plane, 
> and only 3 points, but I need it to accept multiple points in 3d space.
>     }
> 
> Not sure if this helps, but some time ago i made a ICE-Compound for 
> calulating barycentric-Coordinates, based on 3 3D-Vectors.
> Dont know if my formula was correct.... ;-)
> 
> 
> Am 17.07.2013 19:47, schrieb Alok Gandhi:
>> You can have a look at my blog post: 
>> http://alokgandhi.com/blog/2012/05/28/barycentric-coordinates-and-the-magic-of-locations/
>> 
>> 
>> On Wed, Jul 17, 2013 at 12:58 PM, Ben Houston <b...@exocortex.com> wrote:
>> BTW here is our code for calculating barycoordinates from points and
>> creating points from barycoordinates:
>> 
>> template<class T>
>> class Triangle3 {
>> public:
>>         Vec3<T> a;
>>         Vec3<T> b;
>>         Vec3<T> c;
>> 
>>         Matrix44<T> getPointToBarycoordMatrix() const;
>>         Matrix44<T> getBarycoordToPointMatrix() const;
>> };
>> 
>> template<class T>
>> inline Matrix44<T> Triangle3<T>::getPointToBarycoordMatrix() const {
>>         M44x pointToBarycoordMatrix;
>>         bool success = inverseSafe( pointToBarycoordMatrix,
>> getBarycoordToPointMatrix() );
>>         if( ! success ) {
>>                 T oneThird = ((T)1.0)/((T)3.0);
>>                 //Vec3<T> center = ( a + b + c ) * oneThird;
>>                 return Matrix44<T>(
>>                         0, 0, 0, 0,
>>                         0, 0, 0, 0,
>>                         0, 0, 0, 0,
>>                         oneThird, oneThird, oneThird, 0);
>>         }
>>         return pointToBarycoordMatrix;
>> }
>> 
>> template<class T>
>> inline Matrix44<T> Triangle3<T>::getBarycoordToPointMatrix() const {
>>         Vec3<T> n = normal();
>>         return Matrix44<T>(
>>                 a[0], a[1], a[2], 1,
>>                 b[0], b[1], b[2], 1,
>>                 c[0], c[1], c[2], 1,
>>                 n[0], n[1], n[2], 0);
>> }
>> 
>> And this you just multiple your point by the "pointToBarycoordMatrix"
>> matrix to get barycoords.  And if you have barycoordinates, multiply
>> it by "getBarycoordToPointMatrix()" to get your point.
>> 
>> We are using 4 coordinate barycoordinates where the fourth element is
>> the distance from the triangle plane in the normal direction.  Just
>> set it to zero and you should be fine.  The above can be converted to
>> Softimage Matrix types pretty easily.  Probably could be added to the
>> Softimage SDK as well if it isn't already there.
>> 
>> Best regards,
>> -ben
>> 
>> 
>> On Wed, Jul 17, 2013 at 12:04 PM, Ben Houston <b...@exocortex.com> wrote:
>> > So barycoords for a triangle works well and I believe there are tons
>> > of references on the web for this.  Barycoordinates for polygons is a
>> > bit more problematic because they are no longer linear but rather
>> > polynomials and thus harder to calculate.  I'd stick with triangles
>> > and then all those web references should work well.
>> >
>> > Is your problem calculating them from points?
>> >
>> > Basically this is a great guide:
>> >
>> > http://en.wikipedia.org/wiki/Barycentric_coordinate_system
>> >
>> > -ben
>> >
>> >
>> > On Wed, Jul 17, 2013 at 11:38 AM,  <p...@bustykelp.com> wrote:
>> >> Hi, I have spent days on this and I cant work it out
>> >>
>> >> I have a selection of points (not on a flat plane) and I have a test
>> >> position.
>> >> It returns an array that represents the weighting, related to the 
>> >> proximity
>> >> to the other points.
>> >>
>> >> I want to have it so that when the test position is directly at a point, 
>> >> the
>> >> value for that point in the array = 1
>> >> and the rest will be zero
>> >> as the test point moves around the area it interpolates these values, but
>> >> they always add up to 1
>> >>
>> >> It sounds really easy, but I’ve been literally* tearing my hair out over
>> >> this for days.
>> >>
>> >> Ive managed to get barycentric interpolation working for a flat plane, and
>> >> only 3 points, but I need it to accept multiple points in 3d space.
>> >>
>> >> Please help. I’m going bonkers over this
>> >>
>> >> Paul
>> >>
>> >> *(not really literally)
>> >
>> >
>> >
>> > --
>> > Best regards,
>> > Ben Houston
>> > Voice: 613-762-4113 Skype: ben.exocortex Twitter: @exocortexcom
>> > http://Exocortex.com - Passionate CG Software Professionals.
>> 
>> 
>> 
>> --
>> Best regards,
>> Ben Houston
>> Voice: 613-762-4113 Skype: ben.exocortex Twitter: @exocortexcom
>> http://Exocortex.com - Passionate CG Software Professionals.
>> 
>> 
>> 
>> 
>> -- 
>> 
> 
> 

Reply via email to