123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081 |
- #ifndef LA_H_
- #define LA_H_
- #include <math.h>
- #include <stdbool.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 union {
- struct { float x, y; };
- float c[2];
- } V2f;
- typedef union {
- struct { double x, y; };
- double c[2];
- } V2d;
- typedef union {
- struct { int x, y; };
- int c[2];
- } V2i;
- typedef union {
- struct { unsigned int x, y; };
- unsigned int c[2];
- } V2u;
- typedef union {
- struct { float x, y, z; };
- float c[3];
- } V3f;
- typedef union {
- struct { double x, y, z; };
- double c[3];
- } V3d;
- typedef union {
- struct { int x, y, z; };
- int c[3];
- } V3i;
- typedef union {
- struct { unsigned int x, y, z; };
- unsigned int c[3];
- } V3u;
- typedef union {
- struct { float x, y, z, w; };
- struct { V2f xy; V2f zw; };
- float c[4];
- } V4f;
- typedef union {
- struct { double x, y, z, w; };
- struct { V2d xy; V2d zw; };
- double c[4];
- } V4d;
- typedef union {
- struct { int x, y, z, w; };
- struct { V2i xy; V2i zw; };
- int c[4];
- } V4i;
- typedef union {
- struct { unsigned int x, y, z, w; };
- struct { V2u xy; V2u zw; };
- unsigned int c[4];
- } 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_mod(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_mod(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_mod(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_mod(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);
- LADEF bool v2i_eq(V2i a, V2i b);
- LADEF bool v2u_eq(V2u a, V2u b);
- #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_mod(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_mod(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_mod(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_mod(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);
- LADEF bool v3i_eq(V3i a, V3i b);
- LADEF bool v3u_eq(V3u a, V3u b);
- #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_mod(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_mod(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_mod(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_mod(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);
- LADEF bool v4i_eq(V4i a, V4i b);
- LADEF bool v4u_eq(V4u a, V4u b);
- #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_mod(V2f a, V2f b)
- {
- a.x = fmodf(a.x, b.x);
- a.y = fmodf(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_mod(V2d a, V2d b)
- {
- a.x = fmod(a.x, b.x);
- a.y = fmod(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_mod(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_mod(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 bool v2i_eq(V2i a, V2i b)
- {
- if (a.x != b.x) return false;
- if (a.y != b.y) return false;
- return true;
- }
- LADEF bool v2u_eq(V2u a, V2u b)
- {
- if (a.x != b.x) return false;
- if (a.y != b.y) return false;
- return true;
- }
- 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_mod(V3f a, V3f b)
- {
- a.x = fmodf(a.x, b.x);
- a.y = fmodf(a.y, b.y);
- a.z = fmodf(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_mod(V3d a, V3d b)
- {
- a.x = fmod(a.x, b.x);
- a.y = fmod(a.y, b.y);
- a.z = fmod(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_mod(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_mod(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 bool v3i_eq(V3i a, V3i b)
- {
- if (a.x != b.x) return false;
- if (a.y != b.y) return false;
- if (a.z != b.z) return false;
- return true;
- }
- LADEF bool v3u_eq(V3u a, V3u b)
- {
- if (a.x != b.x) return false;
- if (a.y != b.y) return false;
- if (a.z != b.z) return false;
- return true;
- }
- 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_mod(V4f a, V4f b)
- {
- a.x = fmodf(a.x, b.x);
- a.y = fmodf(a.y, b.y);
- a.z = fmodf(a.z, b.z);
- a.w = fmodf(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_mod(V4d a, V4d b)
- {
- a.x = fmod(a.x, b.x);
- a.y = fmod(a.y, b.y);
- a.z = fmod(a.z, b.z);
- a.w = fmod(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_mod(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_mod(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;
- }
- LADEF bool v4i_eq(V4i a, V4i b)
- {
- if (a.x != b.x) return false;
- if (a.y != b.y) return false;
- if (a.z != b.z) return false;
- if (a.w != b.w) return false;
- return true;
- }
- LADEF bool v4u_eq(V4u a, V4u b)
- {
- if (a.x != b.x) return false;
- if (a.y != b.y) return false;
- if (a.z != b.z) return false;
- if (a.w != b.w) return false;
- return true;
- }
- #endif // LA_IMPLEMENTATION
|