1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878 |
- #ifndef LA_H_
- #define LA_H_
- #include <math.h>
- #ifndef LADEF
- #define LADEF static inline
- #endif // LADEF
- LADEF float lerpf(float a, float b, float t);
- LADEF double lerp(double a, double b, double t);
- LADEF int mini(int a, int b);
- LADEF int maxi(int a, int b);
- LADEF unsigned int minu(unsigned int a, unsigned int b);
- LADEF unsigned int maxu(unsigned int a, unsigned int b);
- LADEF float clampf(float x, float a, float b);
- LADEF double clampd(double x, double a, double b);
- LADEF int clampi(int x, int a, int b);
- LADEF unsigned int clampu(unsigned int x, unsigned int a, unsigned int b);
- typedef struct { float x, y; } V2f;
- typedef struct { double x, y; } V2d;
- typedef struct { int x, y; } V2i;
- typedef struct { unsigned int x, y; } V2u;
- typedef struct { float x, y, z; } V3f;
- typedef struct { double x, y, z; } V3d;
- typedef struct { int x, y, z; } V3i;
- typedef struct { unsigned int x, y, z; } V3u;
- typedef struct { float x, y, z, w; } V4f;
- typedef struct { double x, y, z, w; } V4d;
- typedef struct { int x, y, z, w; } V4i;
- typedef struct { unsigned int x, y, z, w; } V4u;
- #define V2f_Fmt "v2f(%f, %f)"
- #define V2f_Arg(v) (v).x, (v).y
- LADEF V2f v2f(float x, float y);
- LADEF V2f v2ff(float x);
- LADEF V2f v2f2d(V2d a);
- LADEF V2f v2f2i(V2i a);
- LADEF V2f v2f2u(V2u a);
- LADEF V2f v2f3f(V3f a);
- LADEF V2f v2f3d(V3d a);
- LADEF V2f v2f3i(V3i a);
- LADEF V2f v2f3u(V3u a);
- LADEF V2f v2f4f(V4f a);
- LADEF V2f v2f4d(V4d a);
- LADEF V2f v2f4i(V4i a);
- LADEF V2f v2f4u(V4u a);
- LADEF V2f v2f_sum(V2f a, V2f b);
- LADEF V2f v2f_sub(V2f a, V2f b);
- LADEF V2f v2f_mul(V2f a, V2f b);
- LADEF V2f v2f_div(V2f a, V2f b);
- LADEF V2f v2f_sqrt(V2f a);
- LADEF V2f v2f_pow(V2f base, V2f exp);
- LADEF V2f v2f_sin(V2f a);
- LADEF V2f v2f_cos(V2f a);
- LADEF V2f v2f_min(V2f a, V2f b);
- LADEF V2f v2f_max(V2f a, V2f b);
- LADEF V2f v2f_lerp(V2f a, V2f b, V2f t);
- LADEF V2f v2f_floor(V2f a);
- LADEF V2f v2f_ceil(V2f a);
- LADEF V2f v2f_clamp(V2f x, V2f a, V2f b);
- LADEF float v2f_sqrlen(V2f a);
- LADEF float v2f_len(V2f a);
- #define V2d_Fmt "v2d(%lf, %lf)"
- #define V2d_Arg(v) (v).x, (v).y
- LADEF V2d v2d(double x, double y);
- LADEF V2d v2dd(double x);
- LADEF V2d v2d2f(V2f a);
- LADEF V2d v2d2i(V2i a);
- LADEF V2d v2d2u(V2u a);
- LADEF V2d v2d3f(V3f a);
- LADEF V2d v2d3d(V3d a);
- LADEF V2d v2d3i(V3i a);
- LADEF V2d v2d3u(V3u a);
- LADEF V2d v2d4f(V4f a);
- LADEF V2d v2d4d(V4d a);
- LADEF V2d v2d4i(V4i a);
- LADEF V2d v2d4u(V4u a);
- LADEF V2d v2d_sum(V2d a, V2d b);
- LADEF V2d v2d_sub(V2d a, V2d b);
- LADEF V2d v2d_mul(V2d a, V2d b);
- LADEF V2d v2d_div(V2d a, V2d b);
- LADEF V2d v2d_sqrt(V2d a);
- LADEF V2d v2d_pow(V2d base, V2d exp);
- LADEF V2d v2d_sin(V2d a);
- LADEF V2d v2d_cos(V2d a);
- LADEF V2d v2d_min(V2d a, V2d b);
- LADEF V2d v2d_max(V2d a, V2d b);
- LADEF V2d v2d_lerp(V2d a, V2d b, V2d t);
- LADEF V2d v2d_floor(V2d a);
- LADEF V2d v2d_ceil(V2d a);
- LADEF V2d v2d_clamp(V2d x, V2d a, V2d b);
- LADEF double v2d_sqrlen(V2d a);
- LADEF double v2d_len(V2d a);
- #define V2i_Fmt "v2i(%d, %d)"
- #define V2i_Arg(v) (v).x, (v).y
- LADEF V2i v2i(int x, int y);
- LADEF V2i v2ii(int x);
- LADEF V2i v2i2f(V2f a);
- LADEF V2i v2i2d(V2d a);
- LADEF V2i v2i2u(V2u a);
- LADEF V2i v2i3f(V3f a);
- LADEF V2i v2i3d(V3d a);
- LADEF V2i v2i3i(V3i a);
- LADEF V2i v2i3u(V3u a);
- LADEF V2i v2i4f(V4f a);
- LADEF V2i v2i4d(V4d a);
- LADEF V2i v2i4i(V4i a);
- LADEF V2i v2i4u(V4u a);
- LADEF V2i v2i_sum(V2i a, V2i b);
- LADEF V2i v2i_sub(V2i a, V2i b);
- LADEF V2i v2i_mul(V2i a, V2i b);
- LADEF V2i v2i_div(V2i a, V2i b);
- LADEF V2i v2i_min(V2i a, V2i b);
- LADEF V2i v2i_max(V2i a, V2i b);
- LADEF V2i v2i_clamp(V2i x, V2i a, V2i b);
- LADEF int v2i_sqrlen(V2i a);
- #define V2u_Fmt "v2u(%u, %u)"
- #define V2u_Arg(v) (v).x, (v).y
- LADEF V2u v2u(unsigned int x, unsigned int y);
- LADEF V2u v2uu(unsigned int x);
- LADEF V2u v2u2f(V2f a);
- LADEF V2u v2u2d(V2d a);
- LADEF V2u v2u2i(V2i a);
- LADEF V2u v2u3f(V3f a);
- LADEF V2u v2u3d(V3d a);
- LADEF V2u v2u3i(V3i a);
- LADEF V2u v2u3u(V3u a);
- LADEF V2u v2u4f(V4f a);
- LADEF V2u v2u4d(V4d a);
- LADEF V2u v2u4i(V4i a);
- LADEF V2u v2u4u(V4u a);
- LADEF V2u v2u_sum(V2u a, V2u b);
- LADEF V2u v2u_sub(V2u a, V2u b);
- LADEF V2u v2u_mul(V2u a, V2u b);
- LADEF V2u v2u_div(V2u a, V2u b);
- LADEF V2u v2u_min(V2u a, V2u b);
- LADEF V2u v2u_max(V2u a, V2u b);
- LADEF V2u v2u_clamp(V2u x, V2u a, V2u b);
- LADEF unsigned int v2u_sqrlen(V2u a);
- #define V3f_Fmt "v3f(%f, %f, %f)"
- #define V3f_Arg(v) (v).x, (v).y, (v).z
- LADEF V3f v3f(float x, float y, float z);
- LADEF V3f v3ff(float x);
- LADEF V3f v3f2f(V2f a);
- LADEF V3f v3f2d(V2d a);
- LADEF V3f v3f2i(V2i a);
- LADEF V3f v3f2u(V2u a);
- LADEF V3f v3f3d(V3d a);
- LADEF V3f v3f3i(V3i a);
- LADEF V3f v3f3u(V3u a);
- LADEF V3f v3f4f(V4f a);
- LADEF V3f v3f4d(V4d a);
- LADEF V3f v3f4i(V4i a);
- LADEF V3f v3f4u(V4u a);
- LADEF V3f v3f_sum(V3f a, V3f b);
- LADEF V3f v3f_sub(V3f a, V3f b);
- LADEF V3f v3f_mul(V3f a, V3f b);
- LADEF V3f v3f_div(V3f a, V3f b);
- LADEF V3f v3f_sqrt(V3f a);
- LADEF V3f v3f_pow(V3f base, V3f exp);
- LADEF V3f v3f_sin(V3f a);
- LADEF V3f v3f_cos(V3f a);
- LADEF V3f v3f_min(V3f a, V3f b);
- LADEF V3f v3f_max(V3f a, V3f b);
- LADEF V3f v3f_lerp(V3f a, V3f b, V3f t);
- LADEF V3f v3f_floor(V3f a);
- LADEF V3f v3f_ceil(V3f a);
- LADEF V3f v3f_clamp(V3f x, V3f a, V3f b);
- LADEF float v3f_sqrlen(V3f a);
- LADEF float v3f_len(V3f a);
- #define V3d_Fmt "v3d(%lf, %lf, %lf)"
- #define V3d_Arg(v) (v).x, (v).y, (v).z
- LADEF V3d v3d(double x, double y, double z);
- LADEF V3d v3dd(double x);
- LADEF V3d v3d2f(V2f a);
- LADEF V3d v3d2d(V2d a);
- LADEF V3d v3d2i(V2i a);
- LADEF V3d v3d2u(V2u a);
- LADEF V3d v3d3f(V3f a);
- LADEF V3d v3d3i(V3i a);
- LADEF V3d v3d3u(V3u a);
- LADEF V3d v3d4f(V4f a);
- LADEF V3d v3d4d(V4d a);
- LADEF V3d v3d4i(V4i a);
- LADEF V3d v3d4u(V4u a);
- LADEF V3d v3d_sum(V3d a, V3d b);
- LADEF V3d v3d_sub(V3d a, V3d b);
- LADEF V3d v3d_mul(V3d a, V3d b);
- LADEF V3d v3d_div(V3d a, V3d b);
- LADEF V3d v3d_sqrt(V3d a);
- LADEF V3d v3d_pow(V3d base, V3d exp);
- LADEF V3d v3d_sin(V3d a);
- LADEF V3d v3d_cos(V3d a);
- LADEF V3d v3d_min(V3d a, V3d b);
- LADEF V3d v3d_max(V3d a, V3d b);
- LADEF V3d v3d_lerp(V3d a, V3d b, V3d t);
- LADEF V3d v3d_floor(V3d a);
- LADEF V3d v3d_ceil(V3d a);
- LADEF V3d v3d_clamp(V3d x, V3d a, V3d b);
- LADEF double v3d_sqrlen(V3d a);
- LADEF double v3d_len(V3d a);
- #define V3i_Fmt "v3i(%d, %d, %d)"
- #define V3i_Arg(v) (v).x, (v).y, (v).z
- LADEF V3i v3i(int x, int y, int z);
- LADEF V3i v3ii(int x);
- LADEF V3i v3i2f(V2f a);
- LADEF V3i v3i2d(V2d a);
- LADEF V3i v3i2i(V2i a);
- LADEF V3i v3i2u(V2u a);
- LADEF V3i v3i3f(V3f a);
- LADEF V3i v3i3d(V3d a);
- LADEF V3i v3i3u(V3u a);
- LADEF V3i v3i4f(V4f a);
- LADEF V3i v3i4d(V4d a);
- LADEF V3i v3i4i(V4i a);
- LADEF V3i v3i4u(V4u a);
- LADEF V3i v3i_sum(V3i a, V3i b);
- LADEF V3i v3i_sub(V3i a, V3i b);
- LADEF V3i v3i_mul(V3i a, V3i b);
- LADEF V3i v3i_div(V3i a, V3i b);
- LADEF V3i v3i_min(V3i a, V3i b);
- LADEF V3i v3i_max(V3i a, V3i b);
- LADEF V3i v3i_clamp(V3i x, V3i a, V3i b);
- LADEF int v3i_sqrlen(V3i a);
- #define V3u_Fmt "v3u(%u, %u, %u)"
- #define V3u_Arg(v) (v).x, (v).y, (v).z
- LADEF V3u v3u(unsigned int x, unsigned int y, unsigned int z);
- LADEF V3u v3uu(unsigned int x);
- LADEF V3u v3u2f(V2f a);
- LADEF V3u v3u2d(V2d a);
- LADEF V3u v3u2i(V2i a);
- LADEF V3u v3u2u(V2u a);
- LADEF V3u v3u3f(V3f a);
- LADEF V3u v3u3d(V3d a);
- LADEF V3u v3u3i(V3i a);
- LADEF V3u v3u4f(V4f a);
- LADEF V3u v3u4d(V4d a);
- LADEF V3u v3u4i(V4i a);
- LADEF V3u v3u4u(V4u a);
- LADEF V3u v3u_sum(V3u a, V3u b);
- LADEF V3u v3u_sub(V3u a, V3u b);
- LADEF V3u v3u_mul(V3u a, V3u b);
- LADEF V3u v3u_div(V3u a, V3u b);
- LADEF V3u v3u_min(V3u a, V3u b);
- LADEF V3u v3u_max(V3u a, V3u b);
- LADEF V3u v3u_clamp(V3u x, V3u a, V3u b);
- LADEF unsigned int v3u_sqrlen(V3u a);
- #define V4f_Fmt "v4f(%f, %f, %f, %f)"
- #define V4f_Arg(v) (v).x, (v).y, (v).z, (v).w
- LADEF V4f v4f(float x, float y, float z, float w);
- LADEF V4f v4ff(float x);
- LADEF V4f v4f2f(V2f a);
- LADEF V4f v4f2d(V2d a);
- LADEF V4f v4f2i(V2i a);
- LADEF V4f v4f2u(V2u a);
- LADEF V4f v4f3f(V3f a);
- LADEF V4f v4f3d(V3d a);
- LADEF V4f v4f3i(V3i a);
- LADEF V4f v4f3u(V3u a);
- LADEF V4f v4f4d(V4d a);
- LADEF V4f v4f4i(V4i a);
- LADEF V4f v4f4u(V4u a);
- LADEF V4f v4f_sum(V4f a, V4f b);
- LADEF V4f v4f_sub(V4f a, V4f b);
- LADEF V4f v4f_mul(V4f a, V4f b);
- LADEF V4f v4f_div(V4f a, V4f b);
- LADEF V4f v4f_sqrt(V4f a);
- LADEF V4f v4f_pow(V4f base, V4f exp);
- LADEF V4f v4f_sin(V4f a);
- LADEF V4f v4f_cos(V4f a);
- LADEF V4f v4f_min(V4f a, V4f b);
- LADEF V4f v4f_max(V4f a, V4f b);
- LADEF V4f v4f_lerp(V4f a, V4f b, V4f t);
- LADEF V4f v4f_floor(V4f a);
- LADEF V4f v4f_ceil(V4f a);
- LADEF V4f v4f_clamp(V4f x, V4f a, V4f b);
- LADEF float v4f_sqrlen(V4f a);
- LADEF float v4f_len(V4f a);
- #define V4d_Fmt "v4d(%lf, %lf, %lf, %lf)"
- #define V4d_Arg(v) (v).x, (v).y, (v).z, (v).w
- LADEF V4d v4d(double x, double y, double z, double w);
- LADEF V4d v4dd(double x);
- LADEF V4d v4d2f(V2f a);
- LADEF V4d v4d2d(V2d a);
- LADEF V4d v4d2i(V2i a);
- LADEF V4d v4d2u(V2u a);
- LADEF V4d v4d3f(V3f a);
- LADEF V4d v4d3d(V3d a);
- LADEF V4d v4d3i(V3i a);
- LADEF V4d v4d3u(V3u a);
- LADEF V4d v4d4f(V4f a);
- LADEF V4d v4d4i(V4i a);
- LADEF V4d v4d4u(V4u a);
- LADEF V4d v4d_sum(V4d a, V4d b);
- LADEF V4d v4d_sub(V4d a, V4d b);
- LADEF V4d v4d_mul(V4d a, V4d b);
- LADEF V4d v4d_div(V4d a, V4d b);
- LADEF V4d v4d_sqrt(V4d a);
- LADEF V4d v4d_pow(V4d base, V4d exp);
- LADEF V4d v4d_sin(V4d a);
- LADEF V4d v4d_cos(V4d a);
- LADEF V4d v4d_min(V4d a, V4d b);
- LADEF V4d v4d_max(V4d a, V4d b);
- LADEF V4d v4d_lerp(V4d a, V4d b, V4d t);
- LADEF V4d v4d_floor(V4d a);
- LADEF V4d v4d_ceil(V4d a);
- LADEF V4d v4d_clamp(V4d x, V4d a, V4d b);
- LADEF double v4d_sqrlen(V4d a);
- LADEF double v4d_len(V4d a);
- #define V4i_Fmt "v4i(%d, %d, %d, %d)"
- #define V4i_Arg(v) (v).x, (v).y, (v).z, (v).w
- LADEF V4i v4i(int x, int y, int z, int w);
- LADEF V4i v4ii(int x);
- LADEF V4i v4i2f(V2f a);
- LADEF V4i v4i2d(V2d a);
- LADEF V4i v4i2i(V2i a);
- LADEF V4i v4i2u(V2u a);
- LADEF V4i v4i3f(V3f a);
- LADEF V4i v4i3d(V3d a);
- LADEF V4i v4i3i(V3i a);
- LADEF V4i v4i3u(V3u a);
- LADEF V4i v4i4f(V4f a);
- LADEF V4i v4i4d(V4d a);
- LADEF V4i v4i4u(V4u a);
- LADEF V4i v4i_sum(V4i a, V4i b);
- LADEF V4i v4i_sub(V4i a, V4i b);
- LADEF V4i v4i_mul(V4i a, V4i b);
- LADEF V4i v4i_div(V4i a, V4i b);
- LADEF V4i v4i_min(V4i a, V4i b);
- LADEF V4i v4i_max(V4i a, V4i b);
- LADEF V4i v4i_clamp(V4i x, V4i a, V4i b);
- LADEF int v4i_sqrlen(V4i a);
- #define V4u_Fmt "v4u(%u, %u, %u, %u)"
- #define V4u_Arg(v) (v).x, (v).y, (v).z, (v).w
- LADEF V4u v4u(unsigned int x, unsigned int y, unsigned int z, unsigned int w);
- LADEF V4u v4uu(unsigned int x);
- LADEF V4u v4u2f(V2f a);
- LADEF V4u v4u2d(V2d a);
- LADEF V4u v4u2i(V2i a);
- LADEF V4u v4u2u(V2u a);
- LADEF V4u v4u3f(V3f a);
- LADEF V4u v4u3d(V3d a);
- LADEF V4u v4u3i(V3i a);
- LADEF V4u v4u3u(V3u a);
- LADEF V4u v4u4f(V4f a);
- LADEF V4u v4u4d(V4d a);
- LADEF V4u v4u4i(V4i a);
- LADEF V4u v4u_sum(V4u a, V4u b);
- LADEF V4u v4u_sub(V4u a, V4u b);
- LADEF V4u v4u_mul(V4u a, V4u b);
- LADEF V4u v4u_div(V4u a, V4u b);
- LADEF V4u v4u_min(V4u a, V4u b);
- LADEF V4u v4u_max(V4u a, V4u b);
- LADEF V4u v4u_clamp(V4u x, V4u a, V4u b);
- LADEF unsigned int v4u_sqrlen(V4u a);
- #endif // LA_H_
- #ifdef LA_IMPLEMENTATION
- LADEF float lerpf(float a, float b, float t)
- {
- return a + (b - a) * t;
- }
- LADEF double lerp(double a, double b, double t)
- {
- return a + (b - a) * t;
- }
- LADEF int mini(int a, int b)
- {
- return a < b ? a : b;
- }
- LADEF int maxi(int a, int b)
- {
- return a < b ? b : a;
- }
- LADEF unsigned int minu(unsigned int a, unsigned int b)
- {
- return a < b ? a : b;
- }
- LADEF unsigned int maxu(unsigned int a, unsigned int b)
- {
- return a < b ? b : a;
- }
- LADEF float clampf(float x, float a, float b)
- {
- return fminf(fmaxf(a, x), b);
- }
- LADEF double clampd(double x, double a, double b)
- {
- return fmin(fmax(a, x), b);
- }
- LADEF int clampi(int x, int a, int b)
- {
- return mini(maxi(a, x), b);
- }
- LADEF unsigned int clampu(unsigned int x, unsigned int a, unsigned int b)
- {
- return minu(maxu(a, x), b);
- }
- LADEF V2f v2f(float x, float y)
- {
- V2f v;
- v.x = x;
- v.y = y;
- return v;
- }
- LADEF V2f v2ff(float x)
- {
- return v2f(x, x);
- }
- LADEF V2f v2f2d(V2d a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f2i(V2i a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f2u(V2u a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f3f(V3f a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f3d(V3d a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f3i(V3i a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f3u(V3u a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f4f(V4f a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f4d(V4d a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f4i(V4i a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f4u(V4u a)
- {
- V2f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- return result;
- }
- LADEF V2f v2f_sum(V2f a, V2f b)
- {
- a.x += b.x;
- a.y += b.y;
- return a;
- }
- LADEF V2f v2f_sub(V2f a, V2f b)
- {
- a.x -= b.x;
- a.y -= b.y;
- return a;
- }
- LADEF V2f v2f_mul(V2f a, V2f b)
- {
- a.x *= b.x;
- a.y *= b.y;
- return a;
- }
- LADEF V2f v2f_div(V2f a, V2f b)
- {
- a.x /= b.x;
- a.y /= b.y;
- return a;
- }
- LADEF V2f v2f_sqrt(V2f a)
- {
- a.x = sqrtf(a.x);
- a.y = sqrtf(a.y);
- return a;
- }
- LADEF V2f v2f_pow(V2f base, V2f exp)
- {
- base.x = powf(base.x, exp.x);
- base.y = powf(base.y, exp.y);
- return base;
- }
- LADEF V2f v2f_sin(V2f a)
- {
- a.x = sinf(a.x);
- a.y = sinf(a.y);
- return a;
- }
- LADEF V2f v2f_cos(V2f a)
- {
- a.x = cosf(a.x);
- a.y = cosf(a.y);
- return a;
- }
- LADEF V2f v2f_min(V2f a, V2f b)
- {
- a.x = fminf(a.x, b.x);
- a.y = fminf(a.y, b.y);
- return a;
- }
- LADEF V2f v2f_max(V2f a, V2f b)
- {
- a.x = fmaxf(a.x, b.x);
- a.y = fmaxf(a.y, b.y);
- return a;
- }
- LADEF V2f v2f_lerp(V2f a, V2f b, V2f t)
- {
- a.x = lerpf(a.x, b.x, t.x);
- a.y = lerpf(a.y, b.y, t.y);
- return a;
- }
- LADEF V2f v2f_floor(V2f a)
- {
- a.x = floorf(a.x);
- a.y = floorf(a.y);
- return a;
- }
- LADEF V2f v2f_ceil(V2f a)
- {
- a.x = ceilf(a.x);
- a.y = ceilf(a.y);
- return a;
- }
- LADEF V2f v2f_clamp(V2f x, V2f a, V2f b)
- {
- x.x = clampf(x.x, a.x, b.x);
- x.y = clampf(x.y, a.y, b.y);
- return x;
- }
- LADEF float v2f_sqrlen(V2f a)
- {
- return a.x*a.x + a.y*a.y;
- }
- LADEF float v2f_len(V2f a)
- {
- return sqrtf(v2f_sqrlen(a));
- }
- LADEF V2d v2d(double x, double y)
- {
- V2d v;
- v.x = x;
- v.y = y;
- return v;
- }
- LADEF V2d v2dd(double x)
- {
- return v2d(x, x);
- }
- LADEF V2d v2d2f(V2f a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d2i(V2i a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d2u(V2u a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d3f(V3f a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d3d(V3d a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d3i(V3i a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d3u(V3u a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d4f(V4f a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d4d(V4d a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d4i(V4i a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d4u(V4u a)
- {
- V2d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- return result;
- }
- LADEF V2d v2d_sum(V2d a, V2d b)
- {
- a.x += b.x;
- a.y += b.y;
- return a;
- }
- LADEF V2d v2d_sub(V2d a, V2d b)
- {
- a.x -= b.x;
- a.y -= b.y;
- return a;
- }
- LADEF V2d v2d_mul(V2d a, V2d b)
- {
- a.x *= b.x;
- a.y *= b.y;
- return a;
- }
- LADEF V2d v2d_div(V2d a, V2d b)
- {
- a.x /= b.x;
- a.y /= b.y;
- return a;
- }
- LADEF V2d v2d_sqrt(V2d a)
- {
- a.x = sqrt(a.x);
- a.y = sqrt(a.y);
- return a;
- }
- LADEF V2d v2d_pow(V2d base, V2d exp)
- {
- base.x = pow(base.x, exp.x);
- base.y = pow(base.y, exp.y);
- return base;
- }
- LADEF V2d v2d_sin(V2d a)
- {
- a.x = sin(a.x);
- a.y = sin(a.y);
- return a;
- }
- LADEF V2d v2d_cos(V2d a)
- {
- a.x = cos(a.x);
- a.y = cos(a.y);
- return a;
- }
- LADEF V2d v2d_min(V2d a, V2d b)
- {
- a.x = fmin(a.x, b.x);
- a.y = fmin(a.y, b.y);
- return a;
- }
- LADEF V2d v2d_max(V2d a, V2d b)
- {
- a.x = fmax(a.x, b.x);
- a.y = fmax(a.y, b.y);
- return a;
- }
- LADEF V2d v2d_lerp(V2d a, V2d b, V2d t)
- {
- a.x = lerp(a.x, b.x, t.x);
- a.y = lerp(a.y, b.y, t.y);
- return a;
- }
- LADEF V2d v2d_floor(V2d a)
- {
- a.x = floor(a.x);
- a.y = floor(a.y);
- return a;
- }
- LADEF V2d v2d_ceil(V2d a)
- {
- a.x = ceil(a.x);
- a.y = ceil(a.y);
- return a;
- }
- LADEF V2d v2d_clamp(V2d x, V2d a, V2d b)
- {
- x.x = clampd(x.x, a.x, b.x);
- x.y = clampd(x.y, a.y, b.y);
- return x;
- }
- LADEF double v2d_sqrlen(V2d a)
- {
- return a.x*a.x + a.y*a.y;
- }
- LADEF double v2d_len(V2d a)
- {
- return sqrt(v2d_sqrlen(a));
- }
- LADEF V2i v2i(int x, int y)
- {
- V2i v;
- v.x = x;
- v.y = y;
- return v;
- }
- LADEF V2i v2ii(int x)
- {
- return v2i(x, x);
- }
- LADEF V2i v2i2f(V2f a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i2d(V2d a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i2u(V2u a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i3f(V3f a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i3d(V3d a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i3i(V3i a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i3u(V3u a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i4f(V4f a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i4d(V4d a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i4i(V4i a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i4u(V4u a)
- {
- V2i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- return result;
- }
- LADEF V2i v2i_sum(V2i a, V2i b)
- {
- a.x += b.x;
- a.y += b.y;
- return a;
- }
- LADEF V2i v2i_sub(V2i a, V2i b)
- {
- a.x -= b.x;
- a.y -= b.y;
- return a;
- }
- LADEF V2i v2i_mul(V2i a, V2i b)
- {
- a.x *= b.x;
- a.y *= b.y;
- return a;
- }
- LADEF V2i v2i_div(V2i a, V2i b)
- {
- a.x /= b.x;
- a.y /= b.y;
- return a;
- }
- LADEF V2i v2i_min(V2i a, V2i b)
- {
- a.x = mini(a.x, b.x);
- a.y = mini(a.y, b.y);
- return a;
- }
- LADEF V2i v2i_max(V2i a, V2i b)
- {
- a.x = maxi(a.x, b.x);
- a.y = maxi(a.y, b.y);
- return a;
- }
- LADEF V2i v2i_clamp(V2i x, V2i a, V2i b)
- {
- x.x = clampi(x.x, a.x, b.x);
- x.y = clampi(x.y, a.y, b.y);
- return x;
- }
- LADEF int v2i_sqrlen(V2i a)
- {
- return a.x*a.x + a.y*a.y;
- }
- LADEF V2u v2u(unsigned int x, unsigned int y)
- {
- V2u v;
- v.x = x;
- v.y = y;
- return v;
- }
- LADEF V2u v2uu(unsigned int x)
- {
- return v2u(x, x);
- }
- LADEF V2u v2u2f(V2f a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u2d(V2d a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u2i(V2i a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u3f(V3f a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u3d(V3d a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u3i(V3i a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u3u(V3u a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u4f(V4f a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u4d(V4d a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u4i(V4i a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u4u(V4u a)
- {
- V2u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- return result;
- }
- LADEF V2u v2u_sum(V2u a, V2u b)
- {
- a.x += b.x;
- a.y += b.y;
- return a;
- }
- LADEF V2u v2u_sub(V2u a, V2u b)
- {
- a.x -= b.x;
- a.y -= b.y;
- return a;
- }
- LADEF V2u v2u_mul(V2u a, V2u b)
- {
- a.x *= b.x;
- a.y *= b.y;
- return a;
- }
- LADEF V2u v2u_div(V2u a, V2u b)
- {
- a.x /= b.x;
- a.y /= b.y;
- return a;
- }
- LADEF V2u v2u_min(V2u a, V2u b)
- {
- a.x = minu(a.x, b.x);
- a.y = minu(a.y, b.y);
- return a;
- }
- LADEF V2u v2u_max(V2u a, V2u b)
- {
- a.x = maxu(a.x, b.x);
- a.y = maxu(a.y, b.y);
- return a;
- }
- LADEF V2u v2u_clamp(V2u x, V2u a, V2u b)
- {
- x.x = clampu(x.x, a.x, b.x);
- x.y = clampu(x.y, a.y, b.y);
- return x;
- }
- LADEF unsigned int v2u_sqrlen(V2u a)
- {
- return a.x*a.x + a.y*a.y;
- }
- LADEF V3f v3f(float x, float y, float z)
- {
- V3f v;
- v.x = x;
- v.y = y;
- v.z = z;
- return v;
- }
- LADEF V3f v3ff(float x)
- {
- return v3f(x, x, x);
- }
- LADEF V3f v3f2f(V2f a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = 0.0f;
- return result;
- }
- LADEF V3f v3f2d(V2d a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = 0.0f;
- return result;
- }
- LADEF V3f v3f2i(V2i a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = 0.0f;
- return result;
- }
- LADEF V3f v3f2u(V2u a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = 0.0f;
- return result;
- }
- LADEF V3f v3f3d(V3d a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- return result;
- }
- LADEF V3f v3f3i(V3i a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- return result;
- }
- LADEF V3f v3f3u(V3u a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- return result;
- }
- LADEF V3f v3f4f(V4f a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- return result;
- }
- LADEF V3f v3f4d(V4d a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- return result;
- }
- LADEF V3f v3f4i(V4i a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- return result;
- }
- LADEF V3f v3f4u(V4u a)
- {
- V3f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- return result;
- }
- LADEF V3f v3f_sum(V3f a, V3f b)
- {
- a.x += b.x;
- a.y += b.y;
- a.z += b.z;
- return a;
- }
- LADEF V3f v3f_sub(V3f a, V3f b)
- {
- a.x -= b.x;
- a.y -= b.y;
- a.z -= b.z;
- return a;
- }
- LADEF V3f v3f_mul(V3f a, V3f b)
- {
- a.x *= b.x;
- a.y *= b.y;
- a.z *= b.z;
- return a;
- }
- LADEF V3f v3f_div(V3f a, V3f b)
- {
- a.x /= b.x;
- a.y /= b.y;
- a.z /= b.z;
- return a;
- }
- LADEF V3f v3f_sqrt(V3f a)
- {
- a.x = sqrtf(a.x);
- a.y = sqrtf(a.y);
- a.z = sqrtf(a.z);
- return a;
- }
- LADEF V3f v3f_pow(V3f base, V3f exp)
- {
- base.x = powf(base.x, exp.x);
- base.y = powf(base.y, exp.y);
- base.z = powf(base.z, exp.z);
- return base;
- }
- LADEF V3f v3f_sin(V3f a)
- {
- a.x = sinf(a.x);
- a.y = sinf(a.y);
- a.z = sinf(a.z);
- return a;
- }
- LADEF V3f v3f_cos(V3f a)
- {
- a.x = cosf(a.x);
- a.y = cosf(a.y);
- a.z = cosf(a.z);
- return a;
- }
- LADEF V3f v3f_min(V3f a, V3f b)
- {
- a.x = fminf(a.x, b.x);
- a.y = fminf(a.y, b.y);
- a.z = fminf(a.z, b.z);
- return a;
- }
- LADEF V3f v3f_max(V3f a, V3f b)
- {
- a.x = fmaxf(a.x, b.x);
- a.y = fmaxf(a.y, b.y);
- a.z = fmaxf(a.z, b.z);
- return a;
- }
- LADEF V3f v3f_lerp(V3f a, V3f b, V3f t)
- {
- a.x = lerpf(a.x, b.x, t.x);
- a.y = lerpf(a.y, b.y, t.y);
- a.z = lerpf(a.z, b.z, t.z);
- return a;
- }
- LADEF V3f v3f_floor(V3f a)
- {
- a.x = floorf(a.x);
- a.y = floorf(a.y);
- a.z = floorf(a.z);
- return a;
- }
- LADEF V3f v3f_ceil(V3f a)
- {
- a.x = ceilf(a.x);
- a.y = ceilf(a.y);
- a.z = ceilf(a.z);
- return a;
- }
- LADEF V3f v3f_clamp(V3f x, V3f a, V3f b)
- {
- x.x = clampf(x.x, a.x, b.x);
- x.y = clampf(x.y, a.y, b.y);
- x.z = clampf(x.z, a.z, b.z);
- return x;
- }
- LADEF float v3f_sqrlen(V3f a)
- {
- return a.x*a.x + a.y*a.y + a.z*a.z;
- }
- LADEF float v3f_len(V3f a)
- {
- return sqrtf(v3f_sqrlen(a));
- }
- LADEF V3d v3d(double x, double y, double z)
- {
- V3d v;
- v.x = x;
- v.y = y;
- v.z = z;
- return v;
- }
- LADEF V3d v3dd(double x)
- {
- return v3d(x, x, x);
- }
- LADEF V3d v3d2f(V2f a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = 0.0;
- return result;
- }
- LADEF V3d v3d2d(V2d a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = 0.0;
- return result;
- }
- LADEF V3d v3d2i(V2i a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = 0.0;
- return result;
- }
- LADEF V3d v3d2u(V2u a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = 0.0;
- return result;
- }
- LADEF V3d v3d3f(V3f a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- return result;
- }
- LADEF V3d v3d3i(V3i a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- return result;
- }
- LADEF V3d v3d3u(V3u a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- return result;
- }
- LADEF V3d v3d4f(V4f a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- return result;
- }
- LADEF V3d v3d4d(V4d a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- return result;
- }
- LADEF V3d v3d4i(V4i a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- return result;
- }
- LADEF V3d v3d4u(V4u a)
- {
- V3d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- return result;
- }
- LADEF V3d v3d_sum(V3d a, V3d b)
- {
- a.x += b.x;
- a.y += b.y;
- a.z += b.z;
- return a;
- }
- LADEF V3d v3d_sub(V3d a, V3d b)
- {
- a.x -= b.x;
- a.y -= b.y;
- a.z -= b.z;
- return a;
- }
- LADEF V3d v3d_mul(V3d a, V3d b)
- {
- a.x *= b.x;
- a.y *= b.y;
- a.z *= b.z;
- return a;
- }
- LADEF V3d v3d_div(V3d a, V3d b)
- {
- a.x /= b.x;
- a.y /= b.y;
- a.z /= b.z;
- return a;
- }
- LADEF V3d v3d_sqrt(V3d a)
- {
- a.x = sqrt(a.x);
- a.y = sqrt(a.y);
- a.z = sqrt(a.z);
- return a;
- }
- LADEF V3d v3d_pow(V3d base, V3d exp)
- {
- base.x = pow(base.x, exp.x);
- base.y = pow(base.y, exp.y);
- base.z = pow(base.z, exp.z);
- return base;
- }
- LADEF V3d v3d_sin(V3d a)
- {
- a.x = sin(a.x);
- a.y = sin(a.y);
- a.z = sin(a.z);
- return a;
- }
- LADEF V3d v3d_cos(V3d a)
- {
- a.x = cos(a.x);
- a.y = cos(a.y);
- a.z = cos(a.z);
- return a;
- }
- LADEF V3d v3d_min(V3d a, V3d b)
- {
- a.x = fmin(a.x, b.x);
- a.y = fmin(a.y, b.y);
- a.z = fmin(a.z, b.z);
- return a;
- }
- LADEF V3d v3d_max(V3d a, V3d b)
- {
- a.x = fmax(a.x, b.x);
- a.y = fmax(a.y, b.y);
- a.z = fmax(a.z, b.z);
- return a;
- }
- LADEF V3d v3d_lerp(V3d a, V3d b, V3d t)
- {
- a.x = lerp(a.x, b.x, t.x);
- a.y = lerp(a.y, b.y, t.y);
- a.z = lerp(a.z, b.z, t.z);
- return a;
- }
- LADEF V3d v3d_floor(V3d a)
- {
- a.x = floor(a.x);
- a.y = floor(a.y);
- a.z = floor(a.z);
- return a;
- }
- LADEF V3d v3d_ceil(V3d a)
- {
- a.x = ceil(a.x);
- a.y = ceil(a.y);
- a.z = ceil(a.z);
- return a;
- }
- LADEF V3d v3d_clamp(V3d x, V3d a, V3d b)
- {
- x.x = clampd(x.x, a.x, b.x);
- x.y = clampd(x.y, a.y, b.y);
- x.z = clampd(x.z, a.z, b.z);
- return x;
- }
- LADEF double v3d_sqrlen(V3d a)
- {
- return a.x*a.x + a.y*a.y + a.z*a.z;
- }
- LADEF double v3d_len(V3d a)
- {
- return sqrt(v3d_sqrlen(a));
- }
- LADEF V3i v3i(int x, int y, int z)
- {
- V3i v;
- v.x = x;
- v.y = y;
- v.z = z;
- return v;
- }
- LADEF V3i v3ii(int x)
- {
- return v3i(x, x, x);
- }
- LADEF V3i v3i2f(V2f a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = 0;
- return result;
- }
- LADEF V3i v3i2d(V2d a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = 0;
- return result;
- }
- LADEF V3i v3i2i(V2i a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = 0;
- return result;
- }
- LADEF V3i v3i2u(V2u a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = 0;
- return result;
- }
- LADEF V3i v3i3f(V3f a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- return result;
- }
- LADEF V3i v3i3d(V3d a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- return result;
- }
- LADEF V3i v3i3u(V3u a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- return result;
- }
- LADEF V3i v3i4f(V4f a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- return result;
- }
- LADEF V3i v3i4d(V4d a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- return result;
- }
- LADEF V3i v3i4i(V4i a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- return result;
- }
- LADEF V3i v3i4u(V4u a)
- {
- V3i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- return result;
- }
- LADEF V3i v3i_sum(V3i a, V3i b)
- {
- a.x += b.x;
- a.y += b.y;
- a.z += b.z;
- return a;
- }
- LADEF V3i v3i_sub(V3i a, V3i b)
- {
- a.x -= b.x;
- a.y -= b.y;
- a.z -= b.z;
- return a;
- }
- LADEF V3i v3i_mul(V3i a, V3i b)
- {
- a.x *= b.x;
- a.y *= b.y;
- a.z *= b.z;
- return a;
- }
- LADEF V3i v3i_div(V3i a, V3i b)
- {
- a.x /= b.x;
- a.y /= b.y;
- a.z /= b.z;
- return a;
- }
- LADEF V3i v3i_min(V3i a, V3i b)
- {
- a.x = mini(a.x, b.x);
- a.y = mini(a.y, b.y);
- a.z = mini(a.z, b.z);
- return a;
- }
- LADEF V3i v3i_max(V3i a, V3i b)
- {
- a.x = maxi(a.x, b.x);
- a.y = maxi(a.y, b.y);
- a.z = maxi(a.z, b.z);
- return a;
- }
- LADEF V3i v3i_clamp(V3i x, V3i a, V3i b)
- {
- x.x = clampi(x.x, a.x, b.x);
- x.y = clampi(x.y, a.y, b.y);
- x.z = clampi(x.z, a.z, b.z);
- return x;
- }
- LADEF int v3i_sqrlen(V3i a)
- {
- return a.x*a.x + a.y*a.y + a.z*a.z;
- }
- LADEF V3u v3u(unsigned int x, unsigned int y, unsigned int z)
- {
- V3u v;
- v.x = x;
- v.y = y;
- v.z = z;
- return v;
- }
- LADEF V3u v3uu(unsigned int x)
- {
- return v3u(x, x, x);
- }
- LADEF V3u v3u2f(V2f a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = 0u;
- return result;
- }
- LADEF V3u v3u2d(V2d a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = 0u;
- return result;
- }
- LADEF V3u v3u2i(V2i a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = 0u;
- return result;
- }
- LADEF V3u v3u2u(V2u a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = 0u;
- return result;
- }
- LADEF V3u v3u3f(V3f a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- return result;
- }
- LADEF V3u v3u3d(V3d a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- return result;
- }
- LADEF V3u v3u3i(V3i a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- return result;
- }
- LADEF V3u v3u4f(V4f a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- return result;
- }
- LADEF V3u v3u4d(V4d a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- return result;
- }
- LADEF V3u v3u4i(V4i a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- return result;
- }
- LADEF V3u v3u4u(V4u a)
- {
- V3u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- return result;
- }
- LADEF V3u v3u_sum(V3u a, V3u b)
- {
- a.x += b.x;
- a.y += b.y;
- a.z += b.z;
- return a;
- }
- LADEF V3u v3u_sub(V3u a, V3u b)
- {
- a.x -= b.x;
- a.y -= b.y;
- a.z -= b.z;
- return a;
- }
- LADEF V3u v3u_mul(V3u a, V3u b)
- {
- a.x *= b.x;
- a.y *= b.y;
- a.z *= b.z;
- return a;
- }
- LADEF V3u v3u_div(V3u a, V3u b)
- {
- a.x /= b.x;
- a.y /= b.y;
- a.z /= b.z;
- return a;
- }
- LADEF V3u v3u_min(V3u a, V3u b)
- {
- a.x = minu(a.x, b.x);
- a.y = minu(a.y, b.y);
- a.z = minu(a.z, b.z);
- return a;
- }
- LADEF V3u v3u_max(V3u a, V3u b)
- {
- a.x = maxu(a.x, b.x);
- a.y = maxu(a.y, b.y);
- a.z = maxu(a.z, b.z);
- return a;
- }
- LADEF V3u v3u_clamp(V3u x, V3u a, V3u b)
- {
- x.x = clampu(x.x, a.x, b.x);
- x.y = clampu(x.y, a.y, b.y);
- x.z = clampu(x.z, a.z, b.z);
- return x;
- }
- LADEF unsigned int v3u_sqrlen(V3u a)
- {
- return a.x*a.x + a.y*a.y + a.z*a.z;
- }
- LADEF V4f v4f(float x, float y, float z, float w)
- {
- V4f v;
- v.x = x;
- v.y = y;
- v.z = z;
- v.w = w;
- return v;
- }
- LADEF V4f v4ff(float x)
- {
- return v4f(x, x, x, x);
- }
- LADEF V4f v4f2f(V2f a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = 0.0f;
- result.w = 0.0f;
- return result;
- }
- LADEF V4f v4f2d(V2d a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = 0.0f;
- result.w = 0.0f;
- return result;
- }
- LADEF V4f v4f2i(V2i a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = 0.0f;
- result.w = 0.0f;
- return result;
- }
- LADEF V4f v4f2u(V2u a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = 0.0f;
- result.w = 0.0f;
- return result;
- }
- LADEF V4f v4f3f(V3f a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- result.w = 0.0f;
- return result;
- }
- LADEF V4f v4f3d(V3d a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- result.w = 0.0f;
- return result;
- }
- LADEF V4f v4f3i(V3i a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- result.w = 0.0f;
- return result;
- }
- LADEF V4f v4f3u(V3u a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- result.w = 0.0f;
- return result;
- }
- LADEF V4f v4f4d(V4d a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- result.w = (float) a.w;
- return result;
- }
- LADEF V4f v4f4i(V4i a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- result.w = (float) a.w;
- return result;
- }
- LADEF V4f v4f4u(V4u a)
- {
- V4f result;
- result.x = (float) a.x;
- result.y = (float) a.y;
- result.z = (float) a.z;
- result.w = (float) a.w;
- return result;
- }
- LADEF V4f v4f_sum(V4f a, V4f b)
- {
- a.x += b.x;
- a.y += b.y;
- a.z += b.z;
- a.w += b.w;
- return a;
- }
- LADEF V4f v4f_sub(V4f a, V4f b)
- {
- a.x -= b.x;
- a.y -= b.y;
- a.z -= b.z;
- a.w -= b.w;
- return a;
- }
- LADEF V4f v4f_mul(V4f a, V4f b)
- {
- a.x *= b.x;
- a.y *= b.y;
- a.z *= b.z;
- a.w *= b.w;
- return a;
- }
- LADEF V4f v4f_div(V4f a, V4f b)
- {
- a.x /= b.x;
- a.y /= b.y;
- a.z /= b.z;
- a.w /= b.w;
- return a;
- }
- LADEF V4f v4f_sqrt(V4f a)
- {
- a.x = sqrtf(a.x);
- a.y = sqrtf(a.y);
- a.z = sqrtf(a.z);
- a.w = sqrtf(a.w);
- return a;
- }
- LADEF V4f v4f_pow(V4f base, V4f exp)
- {
- base.x = powf(base.x, exp.x);
- base.y = powf(base.y, exp.y);
- base.z = powf(base.z, exp.z);
- base.w = powf(base.w, exp.w);
- return base;
- }
- LADEF V4f v4f_sin(V4f a)
- {
- a.x = sinf(a.x);
- a.y = sinf(a.y);
- a.z = sinf(a.z);
- a.w = sinf(a.w);
- return a;
- }
- LADEF V4f v4f_cos(V4f a)
- {
- a.x = cosf(a.x);
- a.y = cosf(a.y);
- a.z = cosf(a.z);
- a.w = cosf(a.w);
- return a;
- }
- LADEF V4f v4f_min(V4f a, V4f b)
- {
- a.x = fminf(a.x, b.x);
- a.y = fminf(a.y, b.y);
- a.z = fminf(a.z, b.z);
- a.w = fminf(a.w, b.w);
- return a;
- }
- LADEF V4f v4f_max(V4f a, V4f b)
- {
- a.x = fmaxf(a.x, b.x);
- a.y = fmaxf(a.y, b.y);
- a.z = fmaxf(a.z, b.z);
- a.w = fmaxf(a.w, b.w);
- return a;
- }
- LADEF V4f v4f_lerp(V4f a, V4f b, V4f t)
- {
- a.x = lerpf(a.x, b.x, t.x);
- a.y = lerpf(a.y, b.y, t.y);
- a.z = lerpf(a.z, b.z, t.z);
- a.w = lerpf(a.w, b.w, t.w);
- return a;
- }
- LADEF V4f v4f_floor(V4f a)
- {
- a.x = floorf(a.x);
- a.y = floorf(a.y);
- a.z = floorf(a.z);
- a.w = floorf(a.w);
- return a;
- }
- LADEF V4f v4f_ceil(V4f a)
- {
- a.x = ceilf(a.x);
- a.y = ceilf(a.y);
- a.z = ceilf(a.z);
- a.w = ceilf(a.w);
- return a;
- }
- LADEF V4f v4f_clamp(V4f x, V4f a, V4f b)
- {
- x.x = clampf(x.x, a.x, b.x);
- x.y = clampf(x.y, a.y, b.y);
- x.z = clampf(x.z, a.z, b.z);
- x.w = clampf(x.w, a.w, b.w);
- return x;
- }
- LADEF float v4f_sqrlen(V4f a)
- {
- return a.x*a.x + a.y*a.y + a.z*a.z + a.w*a.w;
- }
- LADEF float v4f_len(V4f a)
- {
- return sqrtf(v4f_sqrlen(a));
- }
- LADEF V4d v4d(double x, double y, double z, double w)
- {
- V4d v;
- v.x = x;
- v.y = y;
- v.z = z;
- v.w = w;
- return v;
- }
- LADEF V4d v4dd(double x)
- {
- return v4d(x, x, x, x);
- }
- LADEF V4d v4d2f(V2f a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = 0.0;
- result.w = 0.0;
- return result;
- }
- LADEF V4d v4d2d(V2d a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = 0.0;
- result.w = 0.0;
- return result;
- }
- LADEF V4d v4d2i(V2i a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = 0.0;
- result.w = 0.0;
- return result;
- }
- LADEF V4d v4d2u(V2u a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = 0.0;
- result.w = 0.0;
- return result;
- }
- LADEF V4d v4d3f(V3f a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- result.w = 0.0;
- return result;
- }
- LADEF V4d v4d3d(V3d a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- result.w = 0.0;
- return result;
- }
- LADEF V4d v4d3i(V3i a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- result.w = 0.0;
- return result;
- }
- LADEF V4d v4d3u(V3u a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- result.w = 0.0;
- return result;
- }
- LADEF V4d v4d4f(V4f a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- result.w = (double) a.w;
- return result;
- }
- LADEF V4d v4d4i(V4i a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- result.w = (double) a.w;
- return result;
- }
- LADEF V4d v4d4u(V4u a)
- {
- V4d result;
- result.x = (double) a.x;
- result.y = (double) a.y;
- result.z = (double) a.z;
- result.w = (double) a.w;
- return result;
- }
- LADEF V4d v4d_sum(V4d a, V4d b)
- {
- a.x += b.x;
- a.y += b.y;
- a.z += b.z;
- a.w += b.w;
- return a;
- }
- LADEF V4d v4d_sub(V4d a, V4d b)
- {
- a.x -= b.x;
- a.y -= b.y;
- a.z -= b.z;
- a.w -= b.w;
- return a;
- }
- LADEF V4d v4d_mul(V4d a, V4d b)
- {
- a.x *= b.x;
- a.y *= b.y;
- a.z *= b.z;
- a.w *= b.w;
- return a;
- }
- LADEF V4d v4d_div(V4d a, V4d b)
- {
- a.x /= b.x;
- a.y /= b.y;
- a.z /= b.z;
- a.w /= b.w;
- return a;
- }
- LADEF V4d v4d_sqrt(V4d a)
- {
- a.x = sqrt(a.x);
- a.y = sqrt(a.y);
- a.z = sqrt(a.z);
- a.w = sqrt(a.w);
- return a;
- }
- LADEF V4d v4d_pow(V4d base, V4d exp)
- {
- base.x = pow(base.x, exp.x);
- base.y = pow(base.y, exp.y);
- base.z = pow(base.z, exp.z);
- base.w = pow(base.w, exp.w);
- return base;
- }
- LADEF V4d v4d_sin(V4d a)
- {
- a.x = sin(a.x);
- a.y = sin(a.y);
- a.z = sin(a.z);
- a.w = sin(a.w);
- return a;
- }
- LADEF V4d v4d_cos(V4d a)
- {
- a.x = cos(a.x);
- a.y = cos(a.y);
- a.z = cos(a.z);
- a.w = cos(a.w);
- return a;
- }
- LADEF V4d v4d_min(V4d a, V4d b)
- {
- a.x = fmin(a.x, b.x);
- a.y = fmin(a.y, b.y);
- a.z = fmin(a.z, b.z);
- a.w = fmin(a.w, b.w);
- return a;
- }
- LADEF V4d v4d_max(V4d a, V4d b)
- {
- a.x = fmax(a.x, b.x);
- a.y = fmax(a.y, b.y);
- a.z = fmax(a.z, b.z);
- a.w = fmax(a.w, b.w);
- return a;
- }
- LADEF V4d v4d_lerp(V4d a, V4d b, V4d t)
- {
- a.x = lerp(a.x, b.x, t.x);
- a.y = lerp(a.y, b.y, t.y);
- a.z = lerp(a.z, b.z, t.z);
- a.w = lerp(a.w, b.w, t.w);
- return a;
- }
- LADEF V4d v4d_floor(V4d a)
- {
- a.x = floor(a.x);
- a.y = floor(a.y);
- a.z = floor(a.z);
- a.w = floor(a.w);
- return a;
- }
- LADEF V4d v4d_ceil(V4d a)
- {
- a.x = ceil(a.x);
- a.y = ceil(a.y);
- a.z = ceil(a.z);
- a.w = ceil(a.w);
- return a;
- }
- LADEF V4d v4d_clamp(V4d x, V4d a, V4d b)
- {
- x.x = clampd(x.x, a.x, b.x);
- x.y = clampd(x.y, a.y, b.y);
- x.z = clampd(x.z, a.z, b.z);
- x.w = clampd(x.w, a.w, b.w);
- return x;
- }
- LADEF double v4d_sqrlen(V4d a)
- {
- return a.x*a.x + a.y*a.y + a.z*a.z + a.w*a.w;
- }
- LADEF double v4d_len(V4d a)
- {
- return sqrt(v4d_sqrlen(a));
- }
- LADEF V4i v4i(int x, int y, int z, int w)
- {
- V4i v;
- v.x = x;
- v.y = y;
- v.z = z;
- v.w = w;
- return v;
- }
- LADEF V4i v4ii(int x)
- {
- return v4i(x, x, x, x);
- }
- LADEF V4i v4i2f(V2f a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = 0;
- result.w = 0;
- return result;
- }
- LADEF V4i v4i2d(V2d a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = 0;
- result.w = 0;
- return result;
- }
- LADEF V4i v4i2i(V2i a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = 0;
- result.w = 0;
- return result;
- }
- LADEF V4i v4i2u(V2u a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = 0;
- result.w = 0;
- return result;
- }
- LADEF V4i v4i3f(V3f a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- result.w = 0;
- return result;
- }
- LADEF V4i v4i3d(V3d a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- result.w = 0;
- return result;
- }
- LADEF V4i v4i3i(V3i a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- result.w = 0;
- return result;
- }
- LADEF V4i v4i3u(V3u a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- result.w = 0;
- return result;
- }
- LADEF V4i v4i4f(V4f a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- result.w = (int) a.w;
- return result;
- }
- LADEF V4i v4i4d(V4d a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- result.w = (int) a.w;
- return result;
- }
- LADEF V4i v4i4u(V4u a)
- {
- V4i result;
- result.x = (int) a.x;
- result.y = (int) a.y;
- result.z = (int) a.z;
- result.w = (int) a.w;
- return result;
- }
- LADEF V4i v4i_sum(V4i a, V4i b)
- {
- a.x += b.x;
- a.y += b.y;
- a.z += b.z;
- a.w += b.w;
- return a;
- }
- LADEF V4i v4i_sub(V4i a, V4i b)
- {
- a.x -= b.x;
- a.y -= b.y;
- a.z -= b.z;
- a.w -= b.w;
- return a;
- }
- LADEF V4i v4i_mul(V4i a, V4i b)
- {
- a.x *= b.x;
- a.y *= b.y;
- a.z *= b.z;
- a.w *= b.w;
- return a;
- }
- LADEF V4i v4i_div(V4i a, V4i b)
- {
- a.x /= b.x;
- a.y /= b.y;
- a.z /= b.z;
- a.w /= b.w;
- return a;
- }
- LADEF V4i v4i_min(V4i a, V4i b)
- {
- a.x = mini(a.x, b.x);
- a.y = mini(a.y, b.y);
- a.z = mini(a.z, b.z);
- a.w = mini(a.w, b.w);
- return a;
- }
- LADEF V4i v4i_max(V4i a, V4i b)
- {
- a.x = maxi(a.x, b.x);
- a.y = maxi(a.y, b.y);
- a.z = maxi(a.z, b.z);
- a.w = maxi(a.w, b.w);
- return a;
- }
- LADEF V4i v4i_clamp(V4i x, V4i a, V4i b)
- {
- x.x = clampi(x.x, a.x, b.x);
- x.y = clampi(x.y, a.y, b.y);
- x.z = clampi(x.z, a.z, b.z);
- x.w = clampi(x.w, a.w, b.w);
- return x;
- }
- LADEF int v4i_sqrlen(V4i a)
- {
- return a.x*a.x + a.y*a.y + a.z*a.z + a.w*a.w;
- }
- LADEF V4u v4u(unsigned int x, unsigned int y, unsigned int z, unsigned int w)
- {
- V4u v;
- v.x = x;
- v.y = y;
- v.z = z;
- v.w = w;
- return v;
- }
- LADEF V4u v4uu(unsigned int x)
- {
- return v4u(x, x, x, x);
- }
- LADEF V4u v4u2f(V2f a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = 0u;
- result.w = 0u;
- return result;
- }
- LADEF V4u v4u2d(V2d a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = 0u;
- result.w = 0u;
- return result;
- }
- LADEF V4u v4u2i(V2i a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = 0u;
- result.w = 0u;
- return result;
- }
- LADEF V4u v4u2u(V2u a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = 0u;
- result.w = 0u;
- return result;
- }
- LADEF V4u v4u3f(V3f a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- result.w = 0u;
- return result;
- }
- LADEF V4u v4u3d(V3d a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- result.w = 0u;
- return result;
- }
- LADEF V4u v4u3i(V3i a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- result.w = 0u;
- return result;
- }
- LADEF V4u v4u3u(V3u a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- result.w = 0u;
- return result;
- }
- LADEF V4u v4u4f(V4f a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- result.w = (unsigned int) a.w;
- return result;
- }
- LADEF V4u v4u4d(V4d a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- result.w = (unsigned int) a.w;
- return result;
- }
- LADEF V4u v4u4i(V4i a)
- {
- V4u result;
- result.x = (unsigned int) a.x;
- result.y = (unsigned int) a.y;
- result.z = (unsigned int) a.z;
- result.w = (unsigned int) a.w;
- return result;
- }
- LADEF V4u v4u_sum(V4u a, V4u b)
- {
- a.x += b.x;
- a.y += b.y;
- a.z += b.z;
- a.w += b.w;
- return a;
- }
- LADEF V4u v4u_sub(V4u a, V4u b)
- {
- a.x -= b.x;
- a.y -= b.y;
- a.z -= b.z;
- a.w -= b.w;
- return a;
- }
- LADEF V4u v4u_mul(V4u a, V4u b)
- {
- a.x *= b.x;
- a.y *= b.y;
- a.z *= b.z;
- a.w *= b.w;
- return a;
- }
- LADEF V4u v4u_div(V4u a, V4u b)
- {
- a.x /= b.x;
- a.y /= b.y;
- a.z /= b.z;
- a.w /= b.w;
- return a;
- }
- LADEF V4u v4u_min(V4u a, V4u b)
- {
- a.x = minu(a.x, b.x);
- a.y = minu(a.y, b.y);
- a.z = minu(a.z, b.z);
- a.w = minu(a.w, b.w);
- return a;
- }
- LADEF V4u v4u_max(V4u a, V4u b)
- {
- a.x = maxu(a.x, b.x);
- a.y = maxu(a.y, b.y);
- a.z = maxu(a.z, b.z);
- a.w = maxu(a.w, b.w);
- return a;
- }
- LADEF V4u v4u_clamp(V4u x, V4u a, V4u b)
- {
- x.x = clampu(x.x, a.x, b.x);
- x.y = clampu(x.y, a.y, b.y);
- x.z = clampu(x.z, a.z, b.z);
- x.w = clampu(x.w, a.w, b.w);
- return x;
- }
- LADEF unsigned int v4u_sqrlen(V4u a)
- {
- return a.x*a.x + a.y*a.y + a.z*a.z + a.w*a.w;
- }
- #endif // LA_IMPLEMENTATION
|