質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1322閲覧

円周上に要素を配置したい、配置はできたが傾いているのでバランスを整えたい

jjwi

総合スコア14

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/12/30 10:12

イメージ説明

プログラム初心者です。
円周上に要素を配置するページを作成しています。
円周上に要素は配置できたのですが、バランスが悪く傾いているのでそれを直したいです。
(綺麗な5角形になるように)「はじめ」の文字は無視してください!

js
$(function(){
var item_num = $('div.item').length;
var deg = 360.0/item_num;
var red = (deg*Math.PI/180.0);
var circle_r = $("div.item").width() * 1.3;
$('div.item').each(function(i, elem) {
var x = Math.cos(red * i) * circle_r + circle_r;
var y = Math.sin(red * i) * circle_r + circle_r;
$(elem).css('left', x);
$(elem).css('top', y);
});
});

ネットから拾ってきたのは良いものの、初心者でこのjs自体の意味が理解できていません、どこを編集したら位置を直せるか教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

babu_babu_baboo

2021/12/31 03:44

x には sin を、y には -cos を。そもそも位相が90度ずれた関係なのだから。
guest

回答1

0

ベストアンサー

以下のような感じでどうでしょうか?「Math.PI/2」は 90 度回転させることを意味しています。

■ 変更箇所

//var x = Math.cos(red * i) * circle_r + circle_r; //var y = Math.sin(red * i) * circle_r + circle_r; var x = Math.cos(red * i - Math.PI/2) * circle_r + circle_r; var y = Math.sin(red * i - Math.PI/2) * circle_r + circle_r;

■ 実行結果
https://jsfiddle.net/cx20/ntocm35x
イメージ説明

■ 解説
説明の為、色を付けてみました。
このソースの場合、円が描画される順番は赤丸の位置(3時の短針の位置)から時計回り(「赤」→「緑」→「青」→「黄」→「水色」)の順番に描画されます。
「-Math.PI/2」は、回転の開始位置を反時計回りに90度戻すイメージになります。

イメージ説明

<参考>
■ 三角関数
https://qiita.com/rakusan/items/2f60f2ae6af208dda40f
■ ループ関数とvertexについて質問
https://teratail.com/questions/371143

投稿2021/12/30 10:42

編集2021/12/30 16:35
cx20

総合スコア4633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jjwi

2021/12/31 03:17

ご丁寧に説明も加えてくださり、ありがとうございます! 大変助かりました、できました!意味も理解できるよう勉強します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問