#include "matchstick_parts.inc" #include "matchstick_textures.inc" #macro matchstick_figure(st_L, st_O, st_X, st_Y, mk_P) // Returns a matchstick human figure. // {st_L}, {st_O}, {st_X}, and {st_Y} must be arrays of {N=20} // elements, which are the nominal size, origin, local {X} axis vector, // and local {Y} axis vector of the matchstick figure parts: // 00 "spine" Approximate backbone below the neck. // 01 "head" Head. // 02 "neck" Part of the bachbone between torso and head. // 03 "scap0" Left shoulder blade and associated structures. // 04 "uarm0" Left upper arm. // 05 "farm0" Left forearm. // 06 "hand0" Left hand minus fingers and thumb. // 07 "pelv0" Left half of the pelvis. // 08 "thigh0" Left thigh. // 09 "shin0" Left lower leg. // 10 "foot0" Left foot. // 11 "scap1" Right shoulder blade and associated structures. // 12 "uarm1" Right upper arm. // 13 "farm1" Right forearm. // 14 "hand1" Right hand minus fingers and thumb. // 15 "pelv1" Right half of the pelvis. // 16 "thigh1" Right thigh. // 17 "shin1" Right lower leg. // 18 "foot1" Right foot. // {mk_P} must be an array of {M=20} elements with coordinates // of Vicon marker points (in mm): // 00 coudeD Outer knob of right elbow. // 01 poignetD Knob of right wrist opposite to thumb. // 02 mibrasD Middle of right forearm. // 03 doigtD Tip of right middle finger. // 04 epauleD Top knob of right shoulder blade. // 05 D1 Base of neck, T1 vertebra; called "D1" by Vicon. // 06 epauleG Top knob of left shoulder blade. // 07 coudeG Outer knob of left elbow // 08 poignetG Knob of left wrist opposite to thumb. // 09 doigtG Tip of left middle finger. // 10 hancheD Top-front corner of hip bone. // 11 genouD Outer point on left knee bending axis. // 12 malD Outer knob of right ankle. // 13 piedD Top of right foot over base of 5th metatarsal. // 14 hancheG Top front left knob of pelvis. // 15 genouG Outer point on left knee bending axis. // 16 malG Outer knob of left ankle. // 17 piedG Top of left foot over base of 5th metatarsal. // 18 oeilD Side of head, next to the eye. // 19 oreilleG Side of head, next to the ear. union{ // Sticks: // object{ matchstick_stick(2, st_L[00], st_O[00], st_X[00], st_Y[00], 1, tx_stick) } // "spine" object{ matchstick_stick(2, st_L[02], st_O[02], st_X[02], st_Y[02], 1, tx_stick) } // "neck" // object{ matchstick_stick(0, st_L[03], st_O[03], st_X[03], st_Y[03], 0, tx_stick) } // "scap0" object{ matchstick_stick(0, st_L[04], st_O[04], st_X[04], st_Y[04], 0, tx_stick) } // "uarm0" object{ matchstick_stick(0, st_L[05], st_O[05], st_X[05], st_Y[05], 0, tx_stick) } // "farm0" // object{ matchstick_stick(0, st_L[07], st_O[07], st_X[07], st_Y[07], 0, tx_stick) } // "pelv0" object{ matchstick_stick(0, st_L[08], st_O[08], st_X[08], st_Y[08], 0, tx_stick) } // "thigh0" object{ matchstick_stick(0, st_L[09], st_O[09], st_X[09], st_Y[09], 0, tx_stick) } // "shin0" object{ matchstick_phand( st_L[06], st_O[06], st_X[06], st_Y[06], 0, tx_stick) } // "hand0" object{ matchstick_pfoot( st_L[10], st_O[10], st_X[10], st_Y[10], 0, tx_stick) } // "foot0" // object{ matchstick_stick(0, st_L[11], st_O[11], st_X[11], st_Y[11], 1, tx_stick) } // "scap1" object{ matchstick_stick(0, st_L[12], st_O[12], st_X[12], st_Y[12], 1, tx_stick) } // "uarm1" object{ matchstick_stick(0, st_L[13], st_O[13], st_X[13], st_Y[13], 1, tx_stick) } // "farm1" // object{ matchstick_stick(0, st_L[15], st_O[15], st_X[15], st_Y[15], 1, tx_stick) } // "pelv1" object{ matchstick_stick(0, st_L[16], st_O[16], st_X[16], st_Y[16], 1, tx_stick) } // "thigh1" object{ matchstick_stick(0, st_L[17], st_O[17], st_X[17], st_Y[17], 1, tx_stick) } // "shin1" object{ matchstick_phand( st_L[14], st_O[14], st_X[14], st_Y[14], 1, tx_stick) } // "hand1" object{ matchstick_pfoot( st_L[18], st_O[18], st_X[18], st_Y[18], 1, tx_stick) } // "foot1" object{ matchstick_hball( st_L[01], st_O[01], st_X[01], st_Y[01], tx_stick) } // "head" // Markers: object{ matchstick_marker(mk_P[00], tx_marker) } // coudeD object{ matchstick_marker(mk_P[01], tx_marker) } // poignetD object{ matchstick_marker(mk_P[02], tx_marker) } // mibrasD object{ matchstick_marker(mk_P[03], tx_marker) } // doigtD object{ matchstick_marker(mk_P[04], tx_marker) } // epauleD object{ matchstick_marker(mk_P[05], tx_marker) } // D1 object{ matchstick_marker(mk_P[06], tx_marker) } // epauleG object{ matchstick_marker(mk_P[07], tx_marker) } // coudeG object{ matchstick_marker(mk_P[08], tx_marker) } // poignetG object{ matchstick_marker(mk_P[09], tx_marker) } // doigtG object{ matchstick_marker(mk_P[10], tx_marker) } // hancheD object{ matchstick_marker(mk_P[11], tx_marker) } // genouD object{ matchstick_marker(mk_P[12], tx_marker) } // malD object{ matchstick_marker(mk_P[13], tx_marker) } // piedD object{ matchstick_marker(mk_P[14], tx_marker) } // hancheG object{ matchstick_marker(mk_P[15], tx_marker) } // genouG object{ matchstick_marker(mk_P[16], tx_marker) } // malG object{ matchstick_marker(mk_P[17], tx_marker) } // piedG object{ matchstick_marker(mk_P[18], tx_marker) } // oeilD object{ matchstick_marker(mk_P[19], tx_marker) } // oreilleG } #end