Expand1D PinWheel changes

This commit is contained in:
Brandon502
2024-02-21 17:44:08 -05:00
parent 3e131014b2
commit 017b572897

View File

@@ -937,16 +937,16 @@ void IRAM_ATTR_YN Segment::setPixelColor(int i, uint32_t col) //WLEDMM: IRAM_ATT
break;
case M12_sPinWheel: {
// i = 0 through 359
int centerX = vW / 2;
int centerY = vH / 2;
float centerX = (vW-1) / 2;
float centerY = (vH-1) / 2;
// int maxDistance = sqrt(centerX * centerX + centerY * centerY) + 1;
int distance = 1;
int distance = 0;
float cosVal = cos(i * DEG_TO_RAD); // i = current angle
float sinVal = sin(i * DEG_TO_RAD);
while (true) {
int x = centerX + distance * cosVal;
int y = centerY + distance * sinVal;
int x = round(centerX + distance * cosVal);
int y = round(centerY + distance * sinVal);
// Check bounds
if (x < 0 || x >= vW || y < 0 || y >= vH) {
break;
@@ -1093,6 +1093,14 @@ uint32_t Segment::getPixelColor(int i)
else
return getPixelColorXY(vW / 2, vH / 2 - i - 1);
break;
case M12_sPinWheel: //WLEDMM
// not 100% accurate, returns outer edge of circle
int distance = min(vH, vW) / 2;
float centerX = (vW - 1) / 2;
float centerY = (vH - 1) / 2;
int x = round(centerX + distance * cos(i * DEG_TO_RAD));
int y = round(centerY + distance * sin(i * DEG_TO_RAD));
return getPixelColorXY(x, y);
}
return 0;
}