整数の合同
提供:kuhalaboWiki
(版間での差分)
(→整数の合同) |
(→演算表) |
||
| (1人の利用者による、間の6版が非表示) | |||
| 1行: | 1行: | ||
== 演算表 == | == 演算表 == | ||
| + | |||
| + | ;加法表の書き出し | ||
| + | |||
| + | <pre> | ||
| + | int mod = 5; //法とする自然数 | ||
| + | size(500, 500); | ||
| + | float scalar = (float) width / mod; //拡大比率 | ||
| + | for (int i = 0; i < mod; i++){ | ||
| + | for (int j = 0; j < mod; j++){ | ||
| + | int num = (i + j) % mod; //数の計算 | ||
| + | PVector v = new PVector(j, i); //マスの位置 | ||
| + | v.mult(scalar); | ||
| + | fill(255); //マスを白くする | ||
| + | rect(v.x, v.y, scalar, scalar); //マスの描画 | ||
| + | fill(0); //数字を黒くする | ||
| + | textSize(scalar); | ||
| + | text(num, v.x, v.y + scalar); //数字の表示 | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | ;乗法表の書き出し | ||
| + | |||
| + | <pre> | ||
| + | int mod = 5; //法とする自然数 | ||
| + | size(500, 500); | ||
| + | float scalar = (float) width / mod; //拡大比率 | ||
| + | for (int i = 0; i < mod; i++){ | ||
| + | for (int j = 0; j < mod; j++){ | ||
| + | int num = (i * j) % mod; //乗法表の場合 | ||
| + | PVector v = new PVector(j, i); //マスの位置 | ||
| + | v.mult(scalar); | ||
| + | fill(255); //マスを白くする | ||
| + | rect(v.x, v.y, scalar, scalar); //マスの描画 | ||
| + | fill(0); //数字を黒くする | ||
| + | textSize(scalar); | ||
| + | text(num, v.x, v.y + scalar); //数字の表示 | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | |||
| + | ;べき乗法表の書き出し | ||
| + | |||
| + | <pre> | ||
| + | int mod = 7; | ||
| + | size(500, 500); | ||
| + | float scalar = (float) width / (mod - 1); | ||
| + | int num; | ||
| + | for (int i = 1; i < mod; i++){ | ||
| + | num = i; //iの1乗 | ||
| + | for (int j = 1; j < mod; j++){ | ||
| + | PVector v = new PVector(j - 1, i - 1); //マスの位置 | ||
| + | v.mult(scalar); | ||
| + | fill(255); | ||
| + | rect(v.x, v.y, scalar, scalar); //マスを描画 | ||
| + | fill(0); | ||
| + | textSize(scalar); | ||
| + | text(num, v.x, v.y + scalar); //iのj乗をマスに表示 | ||
| + | num = (num * i) % mod; //numをiの(j+1)乗に更新 | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | |||
| + | == 可視化 == | ||
| + | |||
| + | ;数値を色相と直径に適用 | ||
| + | :加法と乗法 | ||
| + | <pre> | ||
| + | int mod = 17; //法とする自然数 | ||
| + | size(500, 500); | ||
| + | colorMode(HSB, 1); | ||
| + | background(0, 0, 1); | ||
| + | float scalar = (float) width / mod; | ||
| + | for (int i = 0; i < mod; i++){ | ||
| + | for (int j = 0; j < mod; j++){ | ||
| + | //int num = (i + j) % mod; //数の計算 | ||
| + | PVector v = new PVector(j + 0.5, i + 0.5); //円の中心位置 | ||
| + | v.mult(scalar); | ||
| + | int num = (i * j) % mod; //乗法表の場合 | ||
| + | // 色相に対応 | ||
| + | fill(num * 1.0 / mod, 1, 1); //数を円の色相に対応 | ||
| + | noStroke(); | ||
| + | ellipse(v.x, v.y, scalar / 2, scalar / 2); | ||
| + | // 円の大きさに対応 | ||
| + | // fill(0, 0, 0); | ||
| + | // ellipse(v.x, v.y, scalar * num / mod, scalar * num / mod); //数を円の直径に対応 | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | |||
| + | :べき乗 | ||
| + | |||
| + | <pre> | ||
| + | |||
| + | int mod = 37; | ||
| + | size(500, 500); | ||
| + | colorMode(HSB, 1); | ||
| + | background(0, 0, 1); | ||
| + | float scalar = (float) width / (mod - 1); | ||
| + | int num; | ||
| + | for (int i = 1; i < mod; i++){ | ||
| + | num = i; | ||
| + | for (int j = 1; j < mod; j++){ | ||
| + | PVector v = new PVector(j - 0.5, i - 0.5); //円の中心位置 | ||
| + | v.mult(scalar); | ||
| + | // 色相に対応 | ||
| + | fill(num * 1.0 / mod, 1, 1); | ||
| + | noStroke(); | ||
| + | ellipse(v.x, v.y, scalar / 2, scalar / 2); | ||
| + | // 円の大きさに対応 | ||
| + | fill(0, 0, 0); | ||
| + | ellipse(v.x, v.y, scalar * num / mod, scalar * num / mod); | ||
| + | num = (num * i) % mod; //numをiの(j+1)乗に更新 | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | == リンク == | ||
| + | |||
| + | [[スケーラブルアート論]] | ||
| + | |||
| + | [[Category:授業]] | ||
2024年10月18日 (金) 09:19時点における最新版
[編集] 演算表
- 加法表の書き出し
int mod = 5; //法とする自然数
size(500, 500);
float scalar = (float) width / mod; //拡大比率
for (int i = 0; i < mod; i++){
for (int j = 0; j < mod; j++){
int num = (i + j) % mod; //数の計算
PVector v = new PVector(j, i); //マスの位置
v.mult(scalar);
fill(255); //マスを白くする
rect(v.x, v.y, scalar, scalar); //マスの描画
fill(0); //数字を黒くする
textSize(scalar);
text(num, v.x, v.y + scalar); //数字の表示
}
}
- 乗法表の書き出し
int mod = 5; //法とする自然数
size(500, 500);
float scalar = (float) width / mod; //拡大比率
for (int i = 0; i < mod; i++){
for (int j = 0; j < mod; j++){
int num = (i * j) % mod; //乗法表の場合
PVector v = new PVector(j, i); //マスの位置
v.mult(scalar);
fill(255); //マスを白くする
rect(v.x, v.y, scalar, scalar); //マスの描画
fill(0); //数字を黒くする
textSize(scalar);
text(num, v.x, v.y + scalar); //数字の表示
}
}
- べき乗法表の書き出し
int mod = 7;
size(500, 500);
float scalar = (float) width / (mod - 1);
int num;
for (int i = 1; i < mod; i++){
num = i; //iの1乗
for (int j = 1; j < mod; j++){
PVector v = new PVector(j - 1, i - 1); //マスの位置
v.mult(scalar);
fill(255);
rect(v.x, v.y, scalar, scalar); //マスを描画
fill(0);
textSize(scalar);
text(num, v.x, v.y + scalar); //iのj乗をマスに表示
num = (num * i) % mod; //numをiの(j+1)乗に更新
}
}
[編集] 可視化
- 数値を色相と直径に適用
- 加法と乗法
int mod = 17; //法とする自然数
size(500, 500);
colorMode(HSB, 1);
background(0, 0, 1);
float scalar = (float) width / mod;
for (int i = 0; i < mod; i++){
for (int j = 0; j < mod; j++){
//int num = (i + j) % mod; //数の計算
PVector v = new PVector(j + 0.5, i + 0.5); //円の中心位置
v.mult(scalar);
int num = (i * j) % mod; //乗法表の場合
// 色相に対応
fill(num * 1.0 / mod, 1, 1); //数を円の色相に対応
noStroke();
ellipse(v.x, v.y, scalar / 2, scalar / 2);
// 円の大きさに対応
// fill(0, 0, 0);
// ellipse(v.x, v.y, scalar * num / mod, scalar * num / mod); //数を円の直径に対応
}
}
- べき乗
int mod = 37;
size(500, 500);
colorMode(HSB, 1);
background(0, 0, 1);
float scalar = (float) width / (mod - 1);
int num;
for (int i = 1; i < mod; i++){
num = i;
for (int j = 1; j < mod; j++){
PVector v = new PVector(j - 0.5, i - 0.5); //円の中心位置
v.mult(scalar);
// 色相に対応
fill(num * 1.0 / mod, 1, 1);
noStroke();
ellipse(v.x, v.y, scalar / 2, scalar / 2);
// 円の大きさに対応
fill(0, 0, 0);
ellipse(v.x, v.y, scalar * num / mod, scalar * num / mod);
num = (num * i) % mod; //numをiの(j+1)乗に更新
}
}