public void double4x4_operator_not_equal_wide_scalar() { double4x4 a0 = double4x4(-16.914588697680529, 168.83411486858233, -462.71352145760949, 130.30776959765137, 214.50161443208424, -440.26328178879959, -197.12796053529155, -169.09985860115842, -386.61117595555783, -281.02101362916687, -270.26885593601912, -403.96372313236992, -269.80570877241234, 299.65422763473089, -71.750904831919286, -432.75573917513515); double b0 = (-145.37277109239847); bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a0 != b0, r0); double4x4 a1 = double4x4(-457.36312100727258, 273.87305773136814, 185.042454567292, -482.53069351731364, 116.39514427836764, 511.73495578753523, 230.50753628020527, 100.27476768394683, 129.68240863163135, 321.17879048044733, -220.63900409482375, 140.33521921016984, 369.2123617461009, 453.81121489676241, -333.66624871532724, -373.93775218256644); double b1 = (-13.519590622521719); bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a1 != b1, r1); double4x4 a2 = double4x4(150.20429451307484, 372.32001488856974, -95.837970539852051, 495.56669663617697, -5.385580780629823, -210.50298581388915, -459.61274812166243, 243.3090676010163, 314.10215702378287, 96.745011136282756, -168.16192944727931, -71.905446324453408, 216.60847983910162, -377.37381356646017, 142.35499841643264, -432.27255722148); double b2 = (-442.16476627912596); bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a2 != b2, r2); double4x4 a3 = double4x4(94.290808959999481, 337.81056205267578, -197.66150746013108, -46.383895180366892, 250.232084629234, 169.099159081047, -181.22105773781476, -481.96699808629558, -427.18079419954717, -249.44207226924692, -488.48895644046786, 202.56492218867174, -243.82353770165867, -222.83222852592928, -448.60260722069188, 481.97402905019658); double b3 = (331.65338889307031); bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a3 != b3, r3); }
public void Inequality_IsInequal() { var a = new double4x4(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); var b = new double4x4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); Assert.True(a != b); }
public void Inequality_IsEqual() { var a = new double4x4(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); var b = new double4x4(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); Assert.False(a != b); }
/// <summary> /// Constructs this matrix from a double4x4. Non-overwritten fields are from an Identity matrix. /// </summary> public double2x2(double4x4 m) { this.m00 = m.m00; this.m01 = m.m01; this.m10 = m.m10; this.m11 = m.m11; }
public void Identity_IsIdentity() { var actual = double4x4.Identity; var expected = new double4x4(new double4(1, 0, 0, 0), new double4(0, 1, 0, 0), new double4(0, 0, 1, 0), new double4(0, 0, 0, 1)); Assert.Equal(expected, actual); }
public void Equality_IsEqual() { var a = new double4x4(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); var b = new double4x4(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); Assert.True(a == b); }
public void ToString_InvariantCulture() { string s = "(1.5, 0, 0, 0)\n(0, 1.5, 0, 0)\n(0, 0, 1.5, 0)\n(0, 0, 0, 1)"; double4x4 f = double4x4.Scale(1.5f); Assert.Equal(s, f.ToString(CultureInfo.InvariantCulture)); }
public void Parse_InvariantCulture() { string s = "(1.5, 0, 0, 0)\n(0, 1.5, 0, 0)\n(0, 0, 1.5, 0)\n(0, 0, 0, 1)"; double4x4 f = double4x4.Scale(1.5f); Assert.Equal(f, double4x4.Parse(s, CultureInfo.InvariantCulture)); }
public static void AreEqual(double4x4 expected, double4x4 actual, int maxUlp, bool signedZeroEqual) { AreEqual(expected.c0, actual.c0, maxUlp, signedZeroEqual); AreEqual(expected.c1, actual.c1, maxUlp, signedZeroEqual); AreEqual(expected.c2, actual.c2, maxUlp, signedZeroEqual); AreEqual(expected.c3, actual.c3, maxUlp, signedZeroEqual); }
public void double4x4_operator_equal_wide_wide() { double4x4 a0 = double4x4(492.15758275061728, -495.20632027797694, 227.45765195947968, -147.37405950733182, -222.68201909897942, 64.093720704360749, -23.890404473939157, -16.8197190839889, 163.23210890741655, -165.27101071424363, 470.87767980568003, -423.94255967808078, 109.63436918595539, 462.69031283943468, -335.38147727371262, 357.23446934168896); double4x4 b0 = double4x4(192.56880888369346, -235.61102472786376, -254.04311740307281, -412.62472052715009, 471.90480945627428, -6.4727852374654162, -339.10237447316865, 488.1875700839737, -379.5965842584132, -308.41700258311675, -82.333374300195544, -102.92108087563935, 226.51573835430463, -356.90132896830391, -362.91277544708589, -427.89843746083716); bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a0 == b0, r0); double4x4 a1 = double4x4(1.5455777652308598, -347.38824741327585, -114.47217302884542, 435.84865804940864, 194.23808607563285, 138.76554710174241, -467.34914205379278, 370.43337767684523, 476.70826147343416, 320.55264702465047, -498.59197377534207, 92.4169581366782, 104.51136856177425, 166.75460608618084, -204.73343024250744, 434.75675674656259); double4x4 b1 = double4x4(466.65013978753711, -102.79904680270658, -43.355954428834821, 85.045664111639212, -91.127054972167628, 422.19208856215334, -477.43130873024057, 1.8770024785198984, 312.5800799394865, 254.59934365684137, 352.72583763335172, 62.490957050812881, 119.71476059766246, -511.05808639482507, -302.47273053902791, -371.76924365189359); bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a1 == b1, r1); double4x4 a2 = double4x4(-397.32965988541469, 503.98163699730378, -503.7141270598928, 90.659743112819115, -303.4452423078219, 9.3449113412503948, 290.9010785980621, -147.57193882184657, 368.08236067745941, -321.60959044173808, -171.4654224717363, -441.30646368549503, -137.76681834914109, 304.68958463551928, 301.88943948498434, -222.22090564585335); double4x4 b2 = double4x4(-20.007841834802093, 21.459455738523729, -426.02067228128232, -305.41193666374863, 261.68332517411716, 50.0047347778476, -334.13464824023407, 75.065677916196023, -51.186689639085273, -135.96155721319911, -409.36487431515235, 160.81974013187914, 102.12079553591127, 277.81306637349212, 434.90674444423371, -15.289183385339186); bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a2 == b2, r2); double4x4 a3 = double4x4(-13.883811718730158, 307.52174844756803, -469.41294572754435, -6.4088704615872416, -290.07966317333262, 46.04458596466327, -168.61907370789862, 283.58987845275078, -244.71330058049097, -367.14044707228447, -492.86314009728989, 311.69617881984277, -90.701378149307061, -352.77372591233518, -218.71025691680154, -95.301376148733027); double4x4 b3 = double4x4(-1.4652092463640543, 64.658699781009318, -163.0260780616785, 390.72893375471654, 113.9645836883991, -248.27529894945923, -469.58777664116946, -73.353983197991738, -420.31107183001518, 358.45325939657789, 58.718313959761645, -499.96478557026239, -168.83810313457536, -93.834922595804073, 324.846676739327, -226.35198675205555); bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a3 == b3, r3); }
public void MatrixMultiplicationTest() { Math3.MatrixLayout = MatrixLayout.RowMajor; Math3.DIFF_THR = 1e-6; Math3.DOUBLE_PRECISION = 6; double4x4 rotX60FromXna = new double4x4(new double [, ] { { 1, 0, 0, 0 }, { 0, 0.5, 0.8660254, 0 }, { 0, -0.8660254, 0.5, 0 }, { 0, 0, 0, 1 } }); double4x4 rotYMinus520FromXna = new double4x4(new double [, ] { { -0.9396927, 0, 0.3420201, 0 }, { 0, 1, 0, 0 }, { -0.3420201, 0, -0.9396927, 0 }, { 0, 0, 0, 1 } }); double4x4 productFromXna = new double4x4(new double [, ] { { -0.9396927, 0, 0.3420201, 0 }, { -0.2961981, 0.5, -0.8137978, 0 }, { -0.17101, -0.8660254, -0.4698463, 0 }, { 0, 0, 0, 1 } }); double4x4 product = rotX60FromXna * rotYMinus520FromXna; Assert.IsTrue(product == productFromXna); }
public static void AreEqual(double4x4 expected, double4x4 actual, double delta = 0.0) { AreEqual(expected.c0, actual.c0, delta); AreEqual(expected.c1, actual.c1, delta); AreEqual(expected.c2, actual.c2, delta); AreEqual(expected.c3, actual.c3, delta); }
public void MatrixDeterminantAndInverseTest() { Math3.MatrixLayout = MatrixLayout.RowMajor; Math3.DIFF_THR = 1e-6; Math3.DOUBLE_PRECISION = 6; double4x4 rotX60FromOpenTK = new double4x4(new double [, ] { { 1, 0, 0, 0 }, { 0, 0.5, -0.8660254, 0 }, { 0, 0.8660254, 0.5, 0 }, { 0, 0, 0, 1 } }); double det = rotX60FromOpenTK.Det3; Assert.IsTrue(Math.Abs(det - 1) <= Math3.DIFF_THR); rotX60FromOpenTK._22 = 3; det = rotX60FromOpenTK.Det3; Assert.IsTrue(Math.Abs(det - 2.25) <= Math3.DIFF_THR); double4x4 rotX20 = double4x4.RotX(20); double4x4 rotXMinus20 = double4x4.RotX(-20); double4x4 rotProduct = rotX20 * rotXMinus20; Assert.IsTrue(rotProduct == double4x4.Identity); }
public half4x4(double4x4 v) { this.c0 = (half4)v.c0; this.c1 = (half4)v.c1; this.c2 = (half4)v.c2; this.c3 = (half4)v.c3; }
public override DRAWRESULT Draw(BaseObject op, DRAWPASS type, BaseDraw bd, BaseDrawHelp bh) { if (type != DRAWPASS.DRAWPASS_HANDLES) { return(DRAWRESULT.DRAWRESULT_SKIP); } int hitid = op.GetHighlightHandle(bd); double4x4 m = bh.GetMg(); if (hitid == 0) { bd.SetPen(C4dApi.GetViewColor(C4dApi.VIEWCOLOR_SELECTION_PREVIEW)); } else { bd.SetPen(C4dApi.GetViewColor(C4dApi.VIEWCOLOR_ACTIVEPOINT)); } // double3 zeroPos = new double3(0, 0, 0); bd.SetMatrix_Matrix(op, ref m); bd.DrawHandle(GetRTHandle(op, 0), DRAWHANDLE.DRAWHANDLE_BIG, 0); bd.DrawLine(GetRTHandle(op, 0), new double3(0, 0, 0), 0); return(DRAWRESULT.DRAWRESULT_OK); }
public void double4x4_operator_equal_wide_scalar() { double4x4 a0 = double4x4(-303.2300766926399, 451.52631327674089, -253.65587413201848, -105.20363502632995, -500.6910920090466, -426.19248338518315, 159.87609656149334, -59.558379439431405, -57.477391031327386, -182.0497396840014, 406.51375861024189, 370.88599866017978, -172.03530629539642, 455.40001198993991, -11.338988547836891, 363.93823044557973); double b0 = (123.5445759871717); bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a0 == b0, r0); double4x4 a1 = double4x4(-27.150561106927, -290.35904254129116, 180.19686635779067, -374.12832015293105, -439.35894295170851, -126.54608899287234, -197.2617896521752, -227.15933357326281, -479.8991937487848, -439.77767750237962, -495.23734902555, -224.51705013239621, -422.83322616239695, -450.19627043707123, -20.106708774392814, 297.37999906082632); double b1 = (-325.97606507221985); bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a1 == b1, r1); double4x4 a2 = double4x4(185.9665759475746, -220.59704910060253, -228.686854707397, -333.00125972041917, 434.2130317325765, 406.24874062382094, -239.86977707588568, 380.93927281952426, 90.349506658664723, -361.32792751925433, -453.59993836544453, 157.73248799039629, -491.04621457077855, 296.61425055964582, 482.26513432071783, -305.87698259292029); double b2 = (-102.97598962810633); bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a2 == b2, r2); double4x4 a3 = double4x4(-290.10212601819171, -110.52835588833705, 496.86356782208361, -441.10175653970884, 50.903518938880211, 66.072402269613235, 455.60591552015671, -390.04430145306713, 491.20810173973814, -498.41480588280353, 143.11344558704343, -347.0413293070352, -146.64416486893043, -243.85346924693022, -85.379532615365235, -438.4940004006466); double b3 = (115.24653988482737); bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a3 == b3, r3); }
/// <summary> /// Transform a Vector by the given Matrix /// </summary> /// <param name="vec">The vector to transform</param> /// <param name="mat">The desired transformation</param> /// <param name="result">The transformed vector</param> public static void Transform(ref double3 vec, ref double4x4 mat, out double3 result) { double4 v4 = new double4(vec.x, vec.y, vec.z, 1.0f); double4.Transform(ref v4, ref mat, out v4); result = v4.xyz; }
public void double4x4_operator_equal_scalar_wide() { double a0 = (-253.39728534100453); double4x4 b0 = double4x4(19.952187785856495, -185.79199346610903, 407.8136052600172, -87.2766969610363, -206.27469382354741, 160.503138855334, -274.77081478516141, -2.6315281403397535, 448.35453602688131, -410.03524251004461, 247.32901465489022, 355.53915350303942, -298.06671180299793, 414.10151429385951, -481.30262707234482, 196.55074438664633); bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a0 == b0, r0); double a1 = (34.60100008668428); double4x4 b1 = double4x4(113.76156645350227, -386.45337861890596, -124.49174672201821, 243.8866447153905, -492.6181826501238, 145.424413033493, 421.55070968230757, -95.409988209330493, 336.80928746648567, 209.58380589707929, 487.441424358376, 161.80653365040507, 149.84247095409899, 225.723996505944, -71.21880176999548, 85.780251781353854); bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a1 == b1, r1); double a2 = (192.547256797807); double4x4 b2 = double4x4(-49.887493395194156, -229.80195652218629, -103.40733413743197, 19.215747126944279, 492.88110827509365, 140.40315849166507, -267.53641546309757, 125.9727018466092, 478.00049398746364, 116.14462071105118, -368.95778220191494, -225.02866350162248, 2.7237255585955609, -452.2632198055569, 87.456553261474028, 401.30651802630462); bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a2 == b2, r2); double a3 = (-18.645524272064449); double4x4 b3 = double4x4(-294.21400060048978, -32.7313416156598, -1.2523367410769311, 14.716069943605021, 0.57037043598029413, 180.78359350039796, 498.26289557770963, -503.8667087517058, -31.08398129003308, 462.9193329582547, -250.21223914353749, 347.56193820925523, -213.48793492721762, -123.75923901598867, -193.4521835751143, -242.24109827831438); bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); TestUtils.AreEqual(a3 == b3, r3); }
/// <summary> /// Transform a double3 by the given Matrix, and project the resulting double4 back to a double3 /// </summary> /// <param name="vec">The vector to transform</param> /// <param name="mat">The desired transformation</param> /// <returns> /// The transformed vector /// </returns> public static double3 TransformPerspective(double3 vec, double4x4 mat) { double3 result; TransformPerspective(ref vec, ref mat, out result); return(result); }
public void double4x4_operator_not_equal_wide_wide() { double4x4 a0 = double4x4(430.8425316432689, 104.69001798736394, 225.80243478799355, -310.57017841496048, -418.61945815506363, 304.12820281839379, -509.32682561749908, -160.53807719076895, -203.30197606016975, -505.76325368590807, 162.17220623892365, 1.1561973100324394, 65.662074358045174, 102.78780250567377, 172.93008120960099, 26.621009123800832); double4x4 b0 = double4x4(210.02470622305975, -55.203330304102678, -269.92533672504373, -234.54673372700194, 25.917412054686565, -63.726991444699024, -484.55371092471933, -425.333599050219, -53.274394775402925, 328.1944192984115, 15.963139303011417, 461.71412417931208, -113.36304455313973, -240.07297264787974, 495.11916970420589, 203.5583661550462); bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a0 != b0, r0); double4x4 a1 = double4x4(235.12595259171258, 128.54198533321824, -354.99697630246959, 334.35948220564023, -495.83200692377613, 468.30740163675853, 458.37094733601941, 299.93733300824522, 43.12718560319729, -354.71349994964595, -145.2871955117617, 390.80186218340032, -303.13149108697263, 391.13459533785215, 139.2868607692825, 104.52318506339714); double4x4 b1 = double4x4(340.49345103860526, -241.90719448863865, 459.56982896270688, 213.0737384357833, -384.7828506831, -255.07233846144396, 477.66343115161328, -248.03662621604121, -407.92344565313471, -199.78886971240343, 151.84326488889906, -97.120607659742518, 154.97589380805187, -172.83452065886672, 441.5027942329192, -401.73862785926957); bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a1 != b1, r1); double4x4 a2 = double4x4(511.29640293088573, 213.1470559635884, -101.09569625793756, 441.6633772522506, 124.36612301895684, 312.02642622218764, 59.65573766625289, -508.65682315670739, 98.699622438615052, 228.79984174892297, 337.83266965385189, -163.1544383331921, 461.69158885520494, -450.77570340166596, -443.56476637514527, -438.2131223334992); double4x4 b2 = double4x4(-411.43016333665241, -337.8202766561044, -430.63088270213029, -150.87180502287663, -206.83699212169137, 34.955056922023687, -255.77146422852366, 99.99864320643178, -161.17557127828502, 68.853526862735634, -285.59012116379574, -428.71731229718648, -286.33740700703925, 2.0271298894784877, -4.8059971354929871, -425.33480115669539); bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a2 != b2, r2); double4x4 a3 = double4x4(22.693964253502827, -254.3687413923297, -247.48362481197512, 365.05907004189635, -337.58682290538536, 187.84500726863973, 351.81683866671142, 355.22365467400459, 151.63271696475931, 240.46585690251823, -299.29704751600377, -227.57129751312141, 263.72427499653975, -287.51186551130928, -491.85517930046433, -219.3070386477313); double4x4 b3 = double4x4(358.04602949602815, 357.80111067267183, 125.75760966434962, -38.241931694672417, 308.15830507323062, -450.45020339007033, -156.15319473862331, 464.63997314155097, -220.86404786857963, -211.53756795243248, -476.3303417993385, 284.88652409468148, 129.86436826077488, -326.75828925089832, -72.36375263722789, -382.82787984555023); bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a3 != b3, r3); }
public void InverseIdentityTest() { double4x4 M = double4x4.Identity; double4x4 MI = M.Inverse(); Assert.AreEqual(double4x4.Identity, MI); }
public void ToString_CultureDE() { string s = "(1,5; 0; 0; 0)\n(0; 1,5; 0; 0)\n(0; 0; 1,5; 0)\n(0; 0; 0; 1)"; double4x4 f = double4x4.Scale(1.5f); Assert.Equal(s, f.ToString(new CultureInfo("de-DE"))); }
public static void AreEqual(double4x4 a, double4x4 b, double delta = 0.0) { AreEqual(a.c0, b.c0, delta); AreEqual(a.c1, b.c1, delta); AreEqual(a.c2, b.c2, delta); AreEqual(a.c3, b.c3, delta); }
public void Parse_CultureDE() { string s = "(1,5; 0; 0; 0)\n(0; 1,5; 0; 0)\n(0; 0; 1,5; 0)\n(0; 0; 0; 1)"; double4x4 f = double4x4.Scale(1.5f); Assert.Equal(f, double4x4.Parse(s, new CultureInfo("de-DE"))); }
public static void AreEqual(double4x4 a, double4x4 b, int maxUlp, bool signedZeroEqual) { AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); }
public void Zero_IsZero() { var actual = double4x4.Zero; var expected = new double4x4(new double4(0, 0, 0, 0), new double4(0, 0, 0, 0), new double4(0, 0, 0, 0), new double4(0, 0, 0, 0)); Assert.Equal(expected, actual); }
void InitOriginalPlane() { double4x4 orient = double4x4.RotVV(double3.UnitY, origPlane.n); this.origPlaneAxisX = double3.UnitX * orient; this.origPlaneAxisY = double3.UnitZ * orient; }
public void Equality_IsInequal() { var a = new double4x4(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); var b = new double4x4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); Assert.False(a == b); }
public void double4x4_operator_not_equal_scalar_wide() { double a0 = (275.79582823244664); double4x4 b0 = double4x4(-57.196896341255353, -382.4325279586169, 97.820359990848374, -161.46364529499022, -458.39563367254829, -499.61786364932448, 327.92217818271467, 367.57121699283425, 59.7863667289663, -209.58068118318016, -62.580453186566217, -479.97497604786184, -49.494519495169868, -114.68521338081229, 109.93924599044919, -176.28482755286842); bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a0 != b0, r0); double a1 = (-347.48529903380449); double4x4 b1 = double4x4(85.540928165214609, -356.65954868712441, -104.24357490625397, -133.54918605347592, 243.53971135036079, 13.141311890045813, -379.98594754747393, -41.281226892620907, 87.911684792447659, -339.07727996403224, -371.82034533648766, 333.14425936953364, 294.81196011920088, -187.14565977228136, 220.19225774528093, -228.18207250730234); bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a1 != b1, r1); double a2 = (-499.72373914146971); double4x4 b2 = double4x4(97.4059055305114, 501.60439395420462, 459.67539880223353, 158.09812290877949, 358.48858921531985, 243.51259171381253, 336.70294991913386, 89.953149122164177, -65.578377515812576, -159.26015503670095, 410.58855528877518, 123.96303206494224, -239.6251271886868, -299.42983808155628, -491.29190443981992, 207.71164641515895); bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a2 != b2, r2); double a3 = (271.56546724567443); double4x4 b3 = double4x4(-329.03772202554984, 461.00740334997295, -317.16052523123125, -102.6549857140775, 211.26339230838391, 116.4261601513374, -34.1936924616777, 391.81758159763069, -34.307318464996, 351.45941631470782, 187.74252351920234, -477.57304237669939, 276.97440660976542, 489.5649785891012, 229.2272890681528, 260.20709645944044); bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); TestUtils.AreEqual(a3 != b3, r3); }
/// <summary> /// Transform a Vector by the given Matrix /// </summary> /// <param name="vec">The vector to transform</param> /// <param name="mat">The desired transformation</param> /// <returns> /// The transformed vector /// </returns> public static double4 Transform(double4 vec, double4x4 mat) { double4 result; Transform(ref vec, ref mat, out result); return(result); }
//TODO: deleted 'override' public bool MoveHandle(BaseObject op, BaseObject undo, ref double4x4 tm, int hit_id, QUALIFIER qualifier) { BaseContainer src = undo.GetDataInstance(); BaseContainer dst = op.GetDataInstance(); double3 handle_dir = new double3(1.0,0.0,0.0); handle_dir = SwapPoint(handle_dir,src.GetLong(C4dApi.PRIM_PLANE)); double val = double3.Dot(tm.Offset, handle_dir); dst.SetReal(CIRCLEOBJECT_RAD, M.Saturate(src.GetReal(CIRCLEOBJECT_RAD)+val, 0.0, C4dApi.MAXRANGE)); return true; }