uobikiemukot / magic_square

Magic Square Junk Code

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

magic_square

TO DO

  • 自動生成のためのイベント管理のものを書き始める
  • 自動で六芒星と呪文を配置する
  • drawSpellCircle:
    • 配置
      • 五芒星の間に入れる回転角度は,36(180/5)
        • 半径の計算:
      • 六芒星の間に入れる回転角度は,30(180/6)
        • 半径の計算: 六芒星なら,rsqrt{3}/3 + (r-rsqrt{3}/3)/2 くらいがちょうどよい
    • 呪文の画像の大きさ
      • 元になる芒星の大きさ(芒星の半径の大きさ)による
        • 大きさ計算: 六芒星なら,2*(r-r*sqrt{3}/3)/3 くらいがちょうどよい
          • 計算上は(r-r*sqrt{3}/3)/2 でちょうど良さそう(1/2)だが,画像にも余白が存在するため実際だと大きさが足りない感じが出る. そのため2/3にする.
        • 大きさ計算: 五芒星なら,
  • 回転度のomegaをradianか度数法か統一する
  • widthをいじったときの座標ズレの修正
    • 六芒星の面積計算
  • 五芒星や六芒星の隙間の計算をする
    • 五芒星なら5つの隙間の角度
  • drawSpellLine
    • r, w の値が引数として渡される必要がまるでない( w に至ってはむしろダメ)ので,要修正. 塗りつぶしの有無に関するフラグや,直線上に呪文を配置するだけも可能にするよう拡張するか検討中.
  • drawNStar
    • n は多芒星特有の密度を指定する変数だが,今のところ,密度2のものしか描けない.要修正.
  • rec5Star, rec6Star
    • 直観的ではないため,t を繰り返し回数に修正し,五芒星内の五角形の頂点を結ぶように五芒星を描画するか, 五芒星内の五角形の内接円で五芒星を描画するかを選択出来るよう,修正するか検討中.

Function Definition

drawCircle(x, y, r, w, f)

(x, y)を中心に半径rの円を太さwの線で描画する.fは塗りつぶすか否かのフラグ(true/false).

drawSpellCircle(t, num, x, y, r, sx, sy, w, flag)

(x, y)を中心に半径rの円に沿って呪文の元になる画像を貼付ける.ただし,円周上に画像の中心(sx/2, sy/2)が来るようにしている.
今のところ,画像は全部で24種類(num <= 24),tはそれを何回繰り返すかを指定(t >= 1).
画像の配置は,0時の方向からスタートして,360 / ((t-1) * num + num) で360度を等分して配置される.
omega は0時の方向からのスタートにズレの回転度を持たせる.
flagは塗りつぶすか否かのフラグ(true/false).

drawHexagram(x, y, r, w, omega, flag)

(x, y)を中心に半径rの円内に六芒星を描画する.
w は描画線の太さ,omega は回転率,flagは六芒星内の塗りつぶりフラグ.

drawHexagon(x, y, r, w, omega, flag)

(x, y)を中心に半径rの円内に六角形を描画する.
w は描画線の太さ,omega は回転率,flagは六角形内の塗りつぶりフラグ.

drawPentagram(x, y, r, w, omega, flag)

(x, y)を中心に半径rの円内に五芒星を描画する.
w は描画線の太さ,omega は回転率,flagは五芒星内の塗りつぶりフラグ.

drawPentagon(x, y, r, w, omega, flag)

(x, y)を中心に半径rの円内に五角形を描画する.
w は描画線の太さ,omega は回転率,flagは五角形内の塗りつぶりフラグ.

drawTrident(x, y, r, w, omega, flag)

(x, y)を中心に半径rの円内に三叉を描画する.
w は描画線の太さ,omega は回転率,flagは五角形内の塗りつぶりフラグ.

drawSquare(x, y, r, w, omega, flag)

(x, y)を中心に半径rの円内に四角を描画する.
w は描画線の太さ,omega は回転率,flagは五角形内の塗りつぶりフラグ.
デフォルトで45度既に回転されている.

drawCross(x, y, r, w, omega, flag)

(x, y)を中心に半径rの円内に十字架を描画する.
w は描画線の太さ,omega は回転率,flagは五角形内の塗りつぶりフラグ.

drawSpellLine(startx, starty, endx, endy, r, sx, sy, w)

(startx, starty)から(endx, endy)まで,呪文の画像(サイズ: sx, sy)が帯状に貼付けられたものを描画する.
そのため,帯の太さは sy に依存.sx は横幅なので,画像のつまり具合のようなもの(基本的には sy と同じ値を想定).
問題は,r, w の値が引数として渡される必要がまるでない( w に至ってはむしろダメ)ので,要修正.
塗りつぶしの有無に関するフラグや,直線上に呪文を配置するだけも可能にするよう拡張するか検討中.

drawNStar(x, y, r, n, w, omega, d, flag)

(x, y)を中心に半径rの円内に多芒星を描画する.
n は多芒星特有の密度を指定する変数だが,今のところ,密度2のものしか描けない.要修正.
w は描画線の太さ,omega は回転率,flag は多芒星の塗りつぶしフラグ.

rec5Star(x, y, r, w, omega, t)

(x, y)を中心に半径rの円内に五芒星を描画した後,再帰的に五芒星内の五角形の頂点を結ぶように五芒星を描画する.
五芒星の描画自体は,drawPentagram を使っている.
w は描画線の太さ,omega は回転率,t は繰り返し回数を制限するための変数.
ただし,t は繰り返す回数ではなく,一定値(今は8)までの距離.つまり,(8 - t)回分繰り返す.
直観的ではないため,t を繰り返し回数に修正し,五芒星内の五角形の頂点を結ぶように五芒星を描画するか,
五芒星内の五角形の内接円で五芒星を描画するかを選択出来るよう,修正するか検討中.

rec6Star(x, y, r, w, omega, t)

(x, y)を中心に半径rの円内に六芒星を描画した後,再帰的に六芒星内の六角形の頂点を結ぶように六芒星を描画する.
六芒星の描画自体は,drawHexagram を使っている.
w は描画線の太さ,omega は回転率,t は繰り返し回数を制限するための変数.
ただし,t は繰り返す回数ではなく,一定値(今は8)までの距離.つまり,(8 - t)回分繰り返す.
直観的ではないため,t を繰り返し回数に修正し,六芒星内の六角形の頂点を結ぶように六芒星を描画するか,
六芒星内の六角形の内接円で六芒星を描画するかを選択出来るよう,修正するか検討中.

About

Magic Square Junk Code


Languages

Language:JavaScript 100.0%