[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Discord のダイスボットを実装していて次の問題にあたった。
{
"code": 50035,
"errors": {
"options": {
"4": {
"options": {
"_errors": [
{
"code": "BASE_TYPE_MAX_LENGTH",
"message": "Must be 25 or fewer in length."
}
]
}
}
}
},
"message": "Invalid Form Body"
}
1つのスラッシュコマンドに大量のオプションをつけようとして失敗したものである。たしかに API ドキュメントにもParameters for the command, max of 25
とあるのであった。
1つのスラッシュコマンドには25個までしかオプションを付けられないらしい。
次男がここ数ヶ月漢字に凝っている。小学1年生 おぼえたい かんじ 80字 学習ポスターなるものをお風呂場に張っておいたら興味津々だった様子。あまりに漢字のことばかり気にするので小学生の新レインボー漢字読み書き辞典 第6版を買い与えるなどした。他にも国語辞典や図鑑、絵本などもあるのだがずっとこれを読んでいる。
何に子が興味を持つのかなんてわからないものだな、と思うなどした。
話題に上がったのでLABS is not installing correctly – Support Centreを訳してみる。ただし、一部省略。具体的にはFull Disk Accessの節等、Mac に纏わる節は省略した。
先日、TRPG のある程度簡単なマップは SVG で描くと良さそうだと言ったが、実際に書いてみた。
(雛´-`).。oO(そうとう楽しかったらしく、ログをまとめたいけれども「マップを描くの無理じゃね?」と壁に面した結果、作られたようです #アヴァンドナー )https://t.co/62gYRTGbCt
— しゅんしゅんひよこ (@Shunshun94) June 11, 2022
システムについては 黒絢のアヴァンドナー | どらこにあん公式サイト を見ていただければ。銀剣のステラナイツと同じところが出しているシステムであり、ステラナイツの戦闘システムはアヴァンドナーの戦闘システムを簡略化したものと呼んでもよいかもしれない。楽しかったは楽しかったのだがログを生成する際に位置関係を示すのが難しいことに気付いて悩ましく思った結果、位置関係をサラッと描けるツールを描くことにして作ったのが上述のものである。
SVG を使っているため、マップのファイルサイズそのものは軽量。ただし、ツールそのものは PNG での出力もできるようにしている。また、SVG そのものを埋め込むのではなく、JS でその場で描画させるソースコードをウェブページに埋め込むこともできるようにしている。SVG, PNG, コード埋め込みいずれの方法であっても上述のツールからファイル・コードをコピーないしダウンロードできるようにした。
ある2点を通る線が y = 0 と交差した時に成す角度を計算したい。そのために以下のように書いた。
const calcAngle = (a, b) => {
const pointLength = {
x: a.x - b.x,
y: a.y - b.y
};
const length = Math.sqrt(Math.pow(pointLength.x, 2) + Math.pow(pointLength.y, 2));
const angles = {
asin: Math.asin((pointLength.y) / length),
acos: Math.acos((pointLength.x) / length)
};
if( pointLength.y >= 0 && pointLength.x <= 0 ) {
return angles.acos;
}else if( pointLength.y <= 0 && pointLength.x <= 0) {
return (angles.asin - Math.PI) * -1;
}else if( pointLength.y <= 0 && pointLength.x >= 0) {
return angles.acos * -1;
} else {
return angles.asin;
}
};
計算には三角関数(sin / cos)は角度から長さを出す関数である。逆関数である逆三角関数(arcsin / arccos)を用いる。これで容易に計算できる……と思いきやそうはいかない。角度によって長さは一意に定まるが、長さによっては角度は一意には定まらないからだ。
| rad | ° | sin | cos |
|---|---|---|---|
| 0~π/2 | 0°~90° | +(正) | +(正) |
| π/2~π | 90°~180° | +(正) | -(負) |
| π~3π/2 | 180°~270° | -(負) | -(負) |
| 3π/2~2π | 270°~360° | -(負) | +(正) |
すなわち、sinθの値が 1/2 の場合、θは 30° かもしれないし、150° かもしれないのである。なお、arcsin(1/2) は 30° になる。
そのため、上述のように x と y の値から値を実際の θ の値を計算する必要がある。