private static Vec3Float LUV_XYZ(Vec3Float tuple) { float L, U, V, X, Y, Z, varU, varV, varY; L = tuple.Item0; U = tuple.Item1; V = tuple.Item2; if (L == 0) { tuple.Item2 = tuple.Item1 = tuple.Item0 = 0.0f; return(tuple); } varY = f_inv((L + 16) / 116.0f); varU = U / (13.0f * L) + refU; varV = V / (13.0f * L) + refV; Y = varY * refY; X = 0 - (9 * Y * varU) / ((varU - 4.0f) * varV - varU * varV); Z = (9 * Y - (15 * varV * Y) - (varV * X)) / (3.0f * varV); tuple.Item0 = X; tuple.Item1 = Y; tuple.Item2 = Z; return(tuple); }
private static Vec3Float rgbPrepare(Vec3Float tuple) { int i; for (i = 0; i < 3; ++i) { tuple[i] = round(tuple[i], 3); if (tuple[i] < 0 || tuple[i] > 1) { if (tuple[i] < 0) { tuple[i] = 0; } else { tuple[i] = 1; } //System.out.println("Illegal rgb value: " + tuple[i]); } tuple[i] = round(tuple[i] * 255, 0); } return(tuple); }
public TrapLoad(int elementIdx, Vec3Float locationStart, Vec3Float locationEnd, Vec3Float loadStart, Vec3Float loadEnd) { ElementIdx = elementIdx; LocationStart = locationStart; LocationEnd = locationEnd; LoadStart = loadStart; LoadEnd = loadEnd; }
public static bool IsZeroVector(Vec3Float vec3) { if (IsDoubleZero(vec3.X) && IsDoubleZero(vec3.Y) && IsDoubleZero(vec3.Z)) { return(true); } return(false); }
private static float dotProduct(Vec3Float a, Vec3Float b, int len) { int i, _i, _ref; float ret = 0.0f; for (i = _i = 0, _ref = len - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) { ret += a[i] * b[i]; } return(ret); }
private static Vec3Float XYZ_RGB(Vec3Float tuple) { float B, G, R; R = fromLinear(dotProduct(m[0], tuple, 3)); G = fromLinear(dotProduct(m[1], tuple, 3)); B = fromLinear(dotProduct(m[2], tuple, 3)); tuple.Item0 = R; tuple.Item1 = G; tuple.Item2 = B; return(tuple); }
private static Vec3Float LCH_HUSL(Vec3Float tuple) { float C, H, L, S, max; L = tuple.Item0; C = tuple.Item1; H = tuple.Item2; max = maxChroma(L, H); S = C / max * 100; tuple.Item0 = H / 360; tuple.Item1 = S / 100; tuple.Item2 = L / 100; return(tuple); }
private static Vec3Float HUSL_LCH(Vec3Float tuple) { float C, H, L, S, max; H = tuple.Item0; S = tuple.Item1; L = tuple.Item2; max = maxChroma(L, H); C = max / 100.0f * S; tuple.Item0 = L; tuple.Item1 = C; tuple.Item2 = H; return(tuple); }
private static Vec3Float LCH_LUV(Vec3Float tuple) { float C, H, Hrad, L, U, V; L = tuple.Item0; C = tuple.Item1; H = tuple.Item2; Hrad = (float)(H / 360.0 * 2.0 * PI); U = (float)(Math.Cos(Hrad) * C); V = (float)(Math.Sin(Hrad) * C); tuple.Item0 = L; tuple.Item1 = U; tuple.Item2 = V; return(tuple); }
private static Vec3Float XYZ_LUV(Vec3Float tuple) { float L, U, V, X, Y, Z, varU, varV; X = tuple.Item0; Y = tuple.Item1; Z = tuple.Item2; varU = (4 * X) / (X + (15.0f * Y) + (3 * Z)); varV = (9 * Y) / (X + (15.0f * Y) + (3 * Z)); L = 116 * f(Y / refY) - 16; U = 13 * L * (varU - refU); V = 13 * L * (varV - refV); tuple.Item0 = L; tuple.Item1 = U; tuple.Item2 = V; return(tuple); }
private static Vec3Float LUV_LCH(Vec3Float tuple) { float C, H, Hrad, L, U, V; L = tuple.Item0; U = tuple.Item1; V = tuple.Item2; C = (float)(Math.Pow(Math.Pow(U, 2) + Math.Pow(V, 2), (1 / 2.0f))); Hrad = (float)(Math.Atan2(V, U)); H = (float)(Hrad * 360.0f / 2.0f / PI); if (H < 0) { H = 360 + H; } tuple.Item0 = L; tuple.Item1 = C; tuple.Item2 = H; return(tuple); }
private static Vec3Float RGB_XYZ(Vec3Float tuple) { float B, G, R, X, Y, Z; Vec3Float rgbl; R = tuple.Item0; G = tuple.Item1; B = tuple.Item2; rgbl.Item0 = toLinear(R); rgbl.Item1 = toLinear(G); rgbl.Item2 = toLinear(B); X = dotProduct(m_inv[0], rgbl, 3); Y = dotProduct(m_inv[1], rgbl, 3); Z = dotProduct(m_inv[2], rgbl, 3); tuple.Item0 = X; tuple.Item1 = Y; tuple.Item2 = Z; return(tuple); }
public UniformLoad(int elementIdx, Vec3Float load) { ElementIdx = elementIdx; Load = load; }
public static double CalculateSQDistance(Vec3Float nodePosition1, Vec3Float nodePosition2) { return(Math.Sqrt((Math.Pow(nodePosition1.X - nodePosition2.X, 2) + Math.Pow(nodePosition1.Y - nodePosition2.Y, 2) + Math.Pow( nodePosition1.Z - nodePosition2.Z, 2)))); }