#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define M_PI 3.141592653589793
double N = 8;
double N2 = N*2;
double R = 30;
class object {
public :
double x;
double y;
double z;
}
const int SCREEN_WIDTH = 128; // OLED display width, in pixels
const int SCREEN_HEIGHT = 64;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
while(true);
}
object obj = [];
for(int i = 0; i<=N; i+=1){
obj[i] = [];
for(int j = 0; j<N2; j+=1){
double Theta = M_PI / N * i;
double Phi = 2*M_PI / N2 * j;
obj[i][j].x = sin(Theta) * sin(Phi) * R;
obj[i][j].y = cos(Theta) * R;
obj[i][j].z = sin(Theta) * cos(Phi) * R;
}
}
}
void loop() {
// 画面表示をクリア
display.clearDisplay();
for(int i = 0; i<=N; i+=1){
for(int j = 0; j<N2; j+=1){
display.drawPixel(obj[i][j].x,obj[i][j].y, WHITE);
}
}
display.display();
delay(1000);
}