// ************** 04_13 **************
//var buttonHeight = 35; //上部のボタンの高さ
//var fontSize = 24; //ボタンに表示される文字の大きさ
//回転加速度用変数
var rtgamma = 0;
//回転角度(ラジアン)
var angle = new PhysicalPoint(0);
//文字の形(1画ごとにbezierCurveToの点の連なり)
var letter = [
[
[282.644, 490.2271],
[245.4956, 491.293],[188.5127, 492.8765],[165.4229, 492.0215],
[163.6665, 471.4995],[162.6104, 440.437],[161.8345, 422.0474],
[187.7681, 422.4375],[267.7236, 423.1533],[283.8403, 422.6455],
[299.957, 422.1377],[334.0288, 420.5347],[359.7949, 420.2529],
[412.4976, 419.6768],[511.6387, 407.9229],[573.3052, 395.1343],
[577.9624, 423.4673],[579.8315, 446.8315],[579.8838, 467.5005],
[530.498, 474.8701],[417.3862, 485.8457],[356.2065, 487.835],
[331.0376, 488.6533],[312.9468, 489.3574],[282.644, 490.2271]
],
[
[421.9941, 606.2524],
[409.8823, 604.7549],[377.6401, 607.9688],[355.6084, 614.6255],
[332.8589, 621.499],[315.4014, 625.9971],[287.4287, 638.5479],
[239.3545, 660.1177],[207.8857, 698.355],[207.8857, 738.4253],
[207.8857, 772.5156],[233.6025, 771.3193],[241.3774, 770.7212],
[259.9175, 770.123],[280.3682, 761.4893],[301.1841, 747.9946],
[322, 734.5],[344.7666, 712.9258],[363.3833, 695.9629],
[382, 679],[411.3086, 635.9741],[421.9941, 606.2524],
[432.6797, 576.5308],[442.7109, 549.2954],[444.7207, 541.063],
[446.7305, 532.8306],[449.1812, 520.5146],[449.5054, 514.1499],
[460.7461, 516.6152],[507.1929, 528.2969],[523.0674, 532.6899],
[521.7109, 537.9399],[519.8062, 546.1846],[518.2832, 552.4263],
[516.7603, 558.668],[501.7983, 599.9453],[493.7622, 618.2139],
[464.3213, 685.1421],[425.5, 736.5],[380.7275, 773.7114],
[362.6118, 788.7676],[336.2529, 801.5645],[319.1265, 813.7822],
[302, 826],[256.3291, 841.2935],[222.8374, 841.2935],
[170.2075, 841.2935],[135.5195, 807.8013],[135.5195, 752.1812],
[135.5195, 669.6475],[202.4849, 600.0195],[283.8403, 569.7705],
[304.4072, 562.1235],[329.8911, 554.8184],[355.0103, 548.8379],
[380.1294, 542.8574],[421.6914, 538.626],[444.7207, 541.063],
[467.75, 543.5],[493.2485, 545.7051],[518.2832, 552.4263],
[605.1655, 575.752],[643.2793, 636.7539],[643.2793, 703.7373],
[643.2793, 799.4282],[571.5112, 864.02],[417.8076, 883.1582],
[413.0229, 867.6084],[398.0713, 838.9009],[386.708, 822.7529],
[494.3604, 810.792],[564.9321, 774.9077],[564.9321, 705.5317],
[564.9321, 685.7954],[558.0693, 636.0708],[493.7622, 618.2139],
[461.9141, 609.3701],[444.293, 609.0093],[421.9941, 606.2524]
],
[
[380.7275, 773.7114],
[383.1196, 781.4863],[386.7197, 789.6377],[389.1001, 794.0459],
[372.0981, 805.5391],[345.9565, 822.397],[327.499, 833.5186],
[324.5381, 828.5049],[320.998, 820.4556],[319.1265, 813.7822],
[317.2549, 807.1089],[308.1182, 774.7393],[301.1841, 747.9946],
[294.25, 721.25],[289.1367, 668.0527],[287.4287, 638.5479],
[285.7207, 609.043],[284.7207, 594.54],[283.8403, 569.7705],
[282.96, 545.001],[282.3325, 517.4507],[282.644, 490.2271],
[282.9556, 463.0034],[283.0464, 442.3101],[283.8403, 422.6455],
[284.6343, 402.981],[284.5, 373.75],[286.8306, 341.9063],
[310.25, 343],[360.75, 346.25],[380.7275, 349.083],
[379.5313, 355.0637],[374.7466, 359.8484],[364.5796, 361.0444],
[362.7852, 378.3887],[361.5894, 399.8398],[359.7949, 420.2529],
[358.0005, 440.666],[356.8047, 466.9028],[356.2065, 487.835],
[355.6084, 508.7671],[354.8408, 530.1821],[355.0103, 548.8379],
[355.1797, 567.4937],[355.4668, 592.001],[355.6084, 614.6255],
[355.75, 637.25],[359.0166, 670.6758],[363.3833, 695.9629],
[367.75, 721.25],[378.3354, 765.9365],[380.7275, 773.7114]
]
];
function setup(){
window.addEventListener("devicemotion", deviceMotion);
}
function deviceMotion(evt) {
var rt = evt.rotationRate;
rtgamma = rt.gamma;
}
function loop(){
//angleに回転課速度センサーの値を加味する
angle.setKasokudo(rtgamma*.1);
//angleを0に戻すようにする
angle.setKasokudo((0 - angle.x)*3);
rtgamma = 0;
//回転の基準の位置
//var kijunX = 327;
//var kijunY = 0;
var kijunX = (327-100); // 18.10.14 add スマホ対応
var kijunY = (0-100); // 18.10.14 add スマホ対応
//回転の位置の計算
//まずletter[][][]のそれぞれの位置からpt[][]を複製する
//その際に基準の位置とletterの位置との距離(すなわち半径)を測り、
//遠ければより大きな、近ければ小さい倍率を計算して、ptの中心からの角度に掛け合わせる
var pt = new Array();
for(var i = 0; i < letter.length; ++i){
pt[i] = new Array();
for(var j = 0; j < letter[i].length; j++){
//それぞれのコントロールポイントと基準点との距離を測り
var dist = Math.sqrt(Math.pow(letter[i][j][0] - kijunX, 2)
+ Math.pow(letter[i][j][1] - kijunY, 2));
var bairitsu = dist/200; //370での割合を計算
//(スクリーン幅の半分を1倍として
// どのぐらい角度に倍率をかけるか)
//angleに倍率をかけると
//基準点からの距離に比例した角度になる
var kakudo = angle.x*bairitsu;
//一次変換
//まず、letterの座標を基準点を原点にした位置に移動
//var xx1 = letter[i][j][0] - kijunX;
//var yy1 = letter[i][j][1] - kijunY;
var xx1 = letter[i][j][0] - (kijunX+40); // 18.10.14 add スマホ対応
var yy1 = letter[i][j][1] - (kijunY+90); // 18.10.14 add スマホ対応
//原点(基準点)を中心にkakudoだけ回転
var xx2 = xx1*Math.cos(kakudo) - yy1*Math.sin(kakudo);
var yy2 = xx1*Math.sin(kakudo) + yy1*Math.cos(kakudo);
//原点を元に戻す
var xx3 = xx2 + kijunX;
var yy3 = yy2 + kijunY;
//letterをそのまま描画するためのもの
//普段はコメントのままでいい
//var xx3 = letter[i][j][0];
//var yy3 = letter[i][j][1];
//var xx3 = letter[i][j][0]-100; // 18.10.14 add
//var yy3 = letter[i][j][1]; // 18.10.14 add
pt[i].push([xx3, yy3]);
}
}
//描画
pbCtx.clearRect(0, 0, screenWidth, screenHeight);
//ptはletterと同じ2元配列なので2重のfor文を作って
for(var i = 0; i < pt.length; ++i){
pbCtx.beginPath();
//それぞれの点を巡る
//3個で一つのbezierCurveToを構成する
for(var j = 0; j < pt[i].length; j+=3){
if(j == 0){ //最初はmoveTo
pbCtx.moveTo(pt[i][j][0], pt[i][j][1]);
}else{ //2個目以降は3個の点を使ってベジェ曲線を引く
pbCtx.bezierCurveTo(pt[i][j-2][0], pt[i][j-2][1],
pt[i][j-1][0], pt[i][j-1][1],
pt[i][j][0], pt[i][j][1]);
}
}
pbCtx.fill();
}
//ボタンの描画
//pbCtx.lineWidth = 1;
//pbCtx.textAlign = "center";
//pbCtx.font = fontSize+"px 'Times New Roman'";
//pbCtx.fillStyle = "black";
//pbCtx.beginPath();
//pbCtx.rect(0, 0, screenWidth, buttonHeight);
//pbCtx.fill();
//pbCtx.fillStyle = "white";
//pbCtx.fillText("4-13 下記キャンバス(600 x 800)は固定です。",
//screenWidth/2, buttonHeight/2+fontSize/3);
//pbCtx.fillStyle = "black";
}
function onPressed(n){
}
function onMove(n){
}
function onReleased(n){
}