ReturnDarkestPath MEL
From scripting
global proc string ReturnDarkestPath(float $U, float $V, float $Rad, int $FanNum, string $SkipStr[], float $SkipRad) { //0001D LLC 2015 Nick Pisca //float $U = 0.896; float $V = 0.428; float $Rad = 0.1; int $FanNum = 6; //string $SkipStr[] = {"0.888,0.777","0.555,0.6"}; float $SkipRad = 0.25; float $WinningLine = 100000.0; float $WinningLine2 = 100000.0; string $WinningStr; string $WinningStr2; vector $OrigVec = << $U, $V, 0.0 >>; for ($x=0;$x<$FanNum;$x++) { float $UnitCircPlace = ($x * 2 * 3.14159 / $FanNum) + 0.2; float $xCos = cos($UnitCircPlace); float $ySin = sin($UnitCircPlace); vector $RelVec = <<$xCos, $ySin, 0.0>>; vector $RelUnit = unit($RelVec); vector $RelRad = $Rad * $RelUnit; vector $CalcVec = $RelRad + $OrigVec; // print($SkipStr); print($CalcVec); if (($CalcVec.x > 0.0) && ($CalcVec.y > 0.0) && ($CalcVec.x < 1.0) && ($CalcVec.y < 1.0)) { float $Ave = ReturnAverageRGBThruPath($U, $V, ($CalcVec.x), ($CalcVec.y), 5, "file1"); //print("Test: " + $Ave + ", " + $x + "\n"); if ($Ave < $WinningLine2) { $WinningLine2 = $Ave; $WinningStr2 = string(($CalcVec.x)) + "," + string(($CalcVec.y)); } if ($Ave < $WinningLine) { if (IsWithDistByString($SkipStr, $CalcVec, $SkipRad) == 0) { $WinningLine = $Ave; $WinningStr = string(($CalcVec.x)) + "," + string(($CalcVec.y)); //print(" Win: " + $Ave + ", " + $x + "," + $WinningStr + "\n"); } } } } if ($WinningStr == "") { print ("Problems... \n"); vector $TVec = ConvertStrToVector($WinningStr2); vector $TVDiff = $OrigVec - $TVec; vector $TVDiffMod = $TVDiff * 7; //$TVDist2; vector $TV2 = $OrigVec - $TVDiffMod; $TV2 = FixUnboundedVector($TV2); string $Win3 = string(($TV2.x)) + "," + string(($TV2.y)); return $Win3; } return $WinningStr ; }
More information on vectors and arrays, read pages 12-16 in YSYT.