HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0306
youdai三角形の五心(重心、内心、外心、垂心、傍心)を取得したいです8未解決


youdai

リンク

2024/3/6(Wed) 19:05:02|NO.101380

三角形の五心(重心、内心、外心、垂心、傍心)を取得したいです。

演算スクリプトを自作してみたはいいのですが、途中から分からなくなってきてしまいました。

以下、書きかけのスクリプトの詳細です。

・重心のみ動作しているように見えるが、これで正解かは不明
・内心、外心は作ってはみたが失敗している
・垂心、傍心は未実装


;vec2演算用モジュール #module vec2_compute #include "hspmath.as" #defcfunc double_mix double u_x, double u_y, double u_coe return u_x * (1.0 - u_coe) + u_y * u_coe #deffunc vec2_multiply array u_res, array u_x, array u_y u_res.0 = u_x.0 * u_y.0 u_res.1 = u_x.1 * u_y.1 return #deffunc vec2_multiply_value array u_res, array u_x, double u_v u_res.0 = u_x.0 * u_v u_res.1 = u_x.1 * u_v return #deffunc vec2_divide array u_res, array u_x, array u_y if u_x.0 == 0.0 : dialog "0.0で除算しようとしています", 1, "vec2_divide error" : end if u_x.1 == 0.0 : dialog "0.0で除算しようとしています", 1, "vec2_divide error" : end if u_y.0 == 0.0 : dialog "0.0で除算しようとしています", 1, "vec2_divide error" : end if u_y.1 == 0.0 : dialog "0.0で除算しようとしています", 1, "vec2_divide error" : end u_res.0 = u_x.0 / u_y.1 u_res.1 = u_x.1 / u_y.1 return #deffunc vec2_divide_value array u_res, array u_x, double u_v if u_v == 0.0 : dialog "0.0で除算しようとしています", 1, "vec2_divide_value error" : end u_res.0 = u_x.0 / u_v u_res.1 = u_x.1 / u_v return #deffunc vec2_divide_value2 array u_res, double u_v, array u_x if u_v == 0.0 : dialog "0.0で除算しようとしています", 1, "vec2_divide_value2 error" : end u_res.0 = u_v / u_x.0 u_res.1 = u_v / u_x.1 return #deffunc vec2_subtract array u_res, array u_x, array u_y u_res.0 = u_x.0 - u_y.0 u_res.1 = u_x.1 - u_y.1 return #deffunc vec2_subtract_value array u_res, array u_x, double u_v u_res.0 = u_x.0 - u_v u_res.1 = u_x.1 - u_v return #deffunc vec2_subtract_value2 array u_res, double u_v, array u_x u_res.0 = u_v - u_x.0 u_res.1 = u_v - u_x.1 return #deffunc vec2_add array u_res, array u_x, array u_y u_res.0 = u_x.0 + u_y.0 u_res.1 = u_x.1 + u_y.1 return #deffunc vec2_add_value array u_res, array u_x, double u_v u_res.0 = u_x.0 + u_v u_res.1 = u_x.1 + u_v return ;distance2と同じ #defcfunc vec2_distance array u_fv0, array u_fv1 return distance2(u_fv0, u_fv1) #deffunc vec2_set_value array u_i, double u_i2 u_i = u_i2, u_i2 return #deffunc vec2_degToRad array u_i, array u_i2 u_i = deg2rad(u_i2.0), deg2rad(u_i2.1) return #deffunc vec2_01toRad array u_i, array u_i2 vec2_multiply_value u_i, u_i2, M_PI2 return #deffunc vec2_radTo01 array u_i, array u_i2 if vec2_calc_equivalence_value(u_i2, 0.0) : vec2_set_value u_i, 0.0 : return vec2_divide_value2 u_i, M_PI2, u_i2 return #deffunc vec2_degTo01 array u_i, array u_i2 vec2_degToRad u_i2, u_i2 vec2_radTo01 u_i2, u_i2 return #deffunc vec2_mix array u_res, array u_x, array u_y, double u_coe u_res.0 = double_mix( u_x.0, u_y.0, u_coe ) u_res.1 = double_mix( u_x.1, u_y.1, u_coe ) return #deffunc vec2_sin array u_res, array u_x u_res.0 = sin(u_x.0) u_res.1 = sin(u_x.1) return #deffunc vec2_cos array u_res, array u_x u_res.0 = cos(u_x.0) u_res.1 = cos(u_x.1) return #deffunc vec2_tan array u_res, array u_x u_res.0 = tan(u_x.0) u_res.1 = tan(u_x.1) return ; ベクトルを正規化(単位長) #deffunc vec2_normalize array u_i l = vector_length(u_i) if l == 0.0 : dialog "ベクトルの長さが0.0です", 1, "vec2_normalize error" : end u_i.0 /= l u_i.1 /= l return #defcfunc vec2_dot array u_x, array u_y return u_x.0*u_y.0 + u_x.1*u_y.1 #global ;------------------------------------------------------------------------------------ ;三角形の五心を扱う #ifndef mod_triangle_center #module mod_triangle_center ;数学用語が辞書に載ってなかったので、関数名の英語はニュアンスで付けた ;vec2版 /* u_vertの仕様 ・vec2版は2次元 ・頂点がOpenGLと同じく右回りに入っている */ ;頂点の配列の順番 #enum VEC2_VERT_A_X = 0 #enum VEC2_VERT_A_Y #enum VEC2_VERT_B_X #enum VEC2_VERT_B_Y #enum VEC2_VERT_C_X #enum VEC2_VERT_C_Y ;定数 #const double DOUBLE_HALF 0.5 ;1.0の半分 #const double GRAVITY_INNER_POINT 1.0 / 3.0 ;重心の内分点 ;重心(高速版) #deffunc vec2_triangle_gravity_center array u_result, array u_vert ;u_vertからそれぞれの頂点が入った配列を作成する a.0 = u_vert.VEC2_VERT_A_X ; 頂点AのX a.1 = u_vert.VEC2_VERT_A_Y ; 頂点AのY b.0 = u_vert.VEC2_VERT_B_X ; 頂点BのX b.1 = u_vert.VEC2_VERT_B_Y ; 頂点BのY c.0 = u_vert.VEC2_VERT_C_X ; 頂点CのX c.1 = u_vert.VEC2_VERT_C_Y ; 頂点CのY ;辺の中心点を取得する vec2_mix center_ab, a, b, DOUBLE_HALF ;GRAVITY_INNER_POINTの内分点が重心の中心位置のはず vec2_mix u_result, center_ab, c, GRAVITY_INNER_POINT return ;外心はsinに要約される? ;外心 #deffunc vec2_triangle_circum_center array u_result, array u_vert ;u_vertからそれぞれの頂点が入った配列を作成する a.0 = u_vert.VEC2_VERT_A_X ; 頂点AのX a.1 = u_vert.VEC2_VERT_A_Y ; 頂点AのY b.0 = u_vert.VEC2_VERT_B_X ; 頂点BのX b.1 = u_vert.VEC2_VERT_B_Y ; 頂点BのY c.0 = u_vert.VEC2_VERT_C_X ; 頂点CのX c.1 = u_vert.VEC2_VERT_C_Y ; 頂点CのY vec2_sin sin_a, a : vec2_multiply_value sin_2a, sin_a, 2.0 vec2_sin sin_b, b : vec2_multiply_value sin_2b, sin_b, 2.0 vec2_sin sin_c, c : vec2_multiply_value sin_2c, sin_c, 2.0 vec2_set_value t0, 0.0 vec2_add t0, sin_2a, sin_2b vec2_add t0, t0, sin_2c vec2_set_value t1, 0.0 vec2_add t1, sin_a, sin_b vec2_add t1, t1, sin_c vec2_divide u_result, t1, t0 return ;内心 #deffunc vec2_triangle_inner_center array u_result, array u_vert ;u_vertからそれぞれの頂点が入った配列を作成する a.0 = u_vert.VEC2_VERT_A_X ; 頂点AのX a.1 = u_vert.VEC2_VERT_A_Y ; 頂点AのY b.0 = u_vert.VEC2_VERT_B_X ; 頂点BのX b.1 = u_vert.VEC2_VERT_B_Y ; 頂点BのY c.0 = u_vert.VEC2_VERT_C_X ; 頂点CのX c.1 = u_vert.VEC2_VERT_C_Y ; 頂点CのY ;角度を取得する ab_rad = atan(a(1)-b(1), a(0)-b(0));value bc_rad = atan(b(1)-c(1), b(0)-c(0));value ca_rad = atan(c(1)-a(1), c(0)-a(0));value ;角度のmix a_rad_center = double_mix(ab_rad, ca_rad, DOUBLE_HALF) ;b_rad_center = double_mix(bc_rad, ca_rad, DOUBLE_HALF) ;c_rad_center = double_mix(ca_rad, bc_rad, DOUBLE_HALF) ;ベクトル算出 vec2_subtract ab, b, a vec2_subtract bc, c, b vec2_subtract ca, a, c ;ベクトルのmix vec2_mix a_v_center, ab, ca, DOUBLE_HALF ;vec2_mix b_v_center, bc, ab, DOUBLE_HALF ;vec2_mix c_v_center, ca, bc, DOUBLE_HALF ;d = a_v_center + b_v_center + c_v_center vec2_mix u_result, a, a_v_center, a_rad_center return ;垂心はtanに要約される? ;垂心 #deffunc vec2_triangle_ortho_center array u_result, array u_vert ;u_vertからそれぞれの頂点が入った配列を作成する a.0 = u_vert.VEC2_VERT_A_X ; 頂点AのX a.1 = u_vert.VEC2_VERT_A_Y ; 頂点AのY b.0 = u_vert.VEC2_VERT_B_X ; 頂点BのX b.1 = u_vert.VEC2_VERT_B_Y ; 頂点BのY c.0 = u_vert.VEC2_VERT_C_X ; 頂点CのX c.1 = u_vert.VEC2_VERT_C_Y ; 頂点CのY dialog "未実装" return ;傍心 #deffunc vec2_triangle_neighboring_center array u_result_0, array u_result_1, array u_result_2, array u_vert ;u_vertからそれぞれの頂点が入った配列を作成する a.0 = u_vert.VEC2_VERT_A_X ; 頂点AのX a.1 = u_vert.VEC2_VERT_A_Y ; 頂点AのY b.0 = u_vert.VEC2_VERT_B_X ; 頂点BのX b.1 = u_vert.VEC2_VERT_B_Y ; 頂点BのY c.0 = u_vert.VEC2_VERT_C_X ; 頂点CのX c.1 = u_vert.VEC2_VERT_C_Y ; 頂点CのY dialog "未実装" return #global #endif ;------------------------------------------------------------------------------------ ;ここから上記のモジュールを使用するスクリプト gosub *setup goto *jyuushin *setup w = 512 screen 0, w, w title "五心" button goto "重心", *jyuushin button goto "内心", *naishin button goto "外心", *gaishin button goto "垂心", *suishin button goto "傍心", *boushin return *reset ;三角形の位置をランダムに生成 ddim a, 2 ddim b, 2 ddim c, 2 ddim abc, 6 ddim res, 2 ddim res2, 2 ;傍心用 ddim res3, 2 ;傍心用 randomize a = double(rnd(w)), double(rnd(w)) b = double(rnd(w)), double(rnd(w)) c = double(rnd(w)), double(rnd(w)) abc.0 = a.0, a.1, b.0, b.1, c.0, c.1 return *jyuushin gosub *reset vec2_triangle_gravity_center res, abc ;重心取得(成功?) goto *draw *naishin gosub *reset vec2_triangle_inner_center res, abc ;内心取得(失敗) goto *draw *gaishin gosub *reset vec2_triangle_circum_center res, abc ;外心取得(失敗) goto *draw *boushin gosub *reset ;傍心は3つの答えがあるが、ここではresだけ描画対象とする vec2_triangle_neighboring_center res, res2, res3, abc ;傍心取得(未実装) goto *draw *suishin gosub *reset vec2_triangle_ortho_center res, abc ;垂心取得(未実装) goto *draw ;三角形描写 ;青い線の交わる部分が中心 *draw redraw 0 pos 0,0 color $f0,$f0,$f0 boxf pos 0,0 color 0,0,0 line int(a.0),int(a.1), int(b.0),int(b.1) line int(b.0),int(b.1), int(c.0),int(c.1) line int(c.0),int(c.1), int(a.0),int(a.1) color 0,0,$f0 line int(a.0),int(a.1), int(res.0),int(res.1) line int(b.0),int(b.1), int(res.0),int(res.1) line int(c.0),int(c.1), int(res.0),int(res.1) pos 0,w-18 mes "中心の位置 "+str(res.0)+", "+str(res.1) redraw 1 stop

恐らく、2Dベクトル演算の組み合わせで演算できるのだと思います。

アドバイスお願い致します。



この記事に返信する


GENKI

リンク

2024/3/6(Wed) 21:15:53|NO.101382

呼ばれた気がした!全部は無理ですが…、

d2cモジュール
https://mclab.uunyan.com/dl/dl50.htm



GENKI

リンク

2024/3/6(Wed) 23:23:19|NO.101383




usagi

リンク

2024/3/6(Wed) 23:49:46|NO.101385

こんにちわ。 全部書くと大変なので外心だけですが、プログラム化の参考として。。。

スクリプトから察するに、おそらく以下の様な
数学の公式を参考にしたのかと思います。

sin2A角a位置ベクトル + sin2B角b位置ベクトル + sin2C角度c位置ベクトル
-------------------------------------------------------
sin2A角 + sin2B角 + sin2C角

ですが、数式やベクトルの理解に誤解があるようでプログラムに落とし込めていないと思われました。

ベクトルに掛け算、割り算の定義はありませんから
ここを見直して書き直すともろもろ算出できるかと思います。

※外積や内積で掛けますがこれは実数や次元が増えてしまうので、
 ベクトル同士の積ではないです。(複素数は忘れてもらって)

※以前OpengGlのreflectionの式のHSP化の時に解説したかもしれませんが、
 計算の結果がスカラーなのかベクトルなのか意識すると良いと思います。


例として、この部分”sin2A角度 + sin2B角度 + sin2C角度”これはスカラーですよね。
A角度は内積の定義を使って、cos(A) = ( ABベクACベクの内積 ) / (AB長さ * ACの長さ)
解く事ができます。
それを元にもろもろ書き下すとこんなかんじです。

;外心 #define ctype acos(%1) atan(sqrt(1.0-double(%1)*(%1)),(%1)) ; cos(y)=xとなるy #deffunc vec2_triangle_circum_center array u_result, array u_vert EPSILON = 0.00000001 ;0除算防止用 ;u_vertからそれぞれの頂点が入った配列を作成する a.0 = u_vert.VEC2_VERT_A_X ; 頂点AのX a.1 = u_vert.VEC2_VERT_A_Y ; 頂点AのY b.0 = u_vert.VEC2_VERT_B_X ; 頂点BのX b.1 = u_vert.VEC2_VERT_B_Y ; 頂点BのY c.0 = u_vert.VEC2_VERT_C_X ; 頂点CのX c.1 = u_vert.VEC2_VERT_C_Y ; 頂点CのY ; ★ベクトルを求める:結果はベクトル AC = c.0-a.0, c.1-a.1 AB = b.0-a.0, b.1-a.1 BA = a.0-b.0, a.1-b.1 BC = c.0-b.0, c.1-b.1 CA = a.0-c.0, a.1-c.1 CB = b.0-c.0, b.1-c.1 ; ★角度を求める:結果はスカラー A角度 = acos( (AC.0*AB.0 + AC.1*AB.1) / ( sqrt(AC.0*AC.0 + AC.1*AC.1) * sqrt(AB.0*AB.0 + AB.1*AB.1) ) ) B角度 = acos( (BA.0*BC.0 + BA.1*BC.1) / ( sqrt(BA.0*BA.0 + BA.1*BA.1) * sqrt(BC.0*BC.0 + BC.1*BC.1) ) ) C角度 = acos( (CA.0*CB.0 + CA.1*CB.1) / ( sqrt(CA.0*CA.0 + CA.1*CA.1) * sqrt(CB.0*CB.0 + CB.1*CB.1) ) ) ; ★角度を足す:スカラー同士の足算定義はスカラー sin2A = sin( 2.0 * A角度) sin2B = sin( 2.0 * B角度) sin2C = sin( 2.0 * C角度) 割る = sin2A + sin2B + sin2C + EPSILON ; ★ベクトルとスカラーの掛算は定義されていて、結果はベクトル sin2Aa = /*X*/a.0 * sin2A, /*Y*/a.1 * sin2A sin2Bb = /*X*/b.0 * sin2B, /*Y*/b.1 * sin2B sin2Cc = /*X*/c.0 * sin2C, /*Y*/c.1 * sin2C ; ★ベクトルとベクトルの足算は定義されていて、結果はベクトル 割られる.0 = sin2Aa.0 + sin2Bb.0 + sin2Cc.0 割られる.1 = sin2Aa.1 + sin2Bb.1 + sin2Cc.1 ; ★ベクトルとスカラーの割り算は定義されていて、結果はベクトル u_result = 割られる.0 / 割る, 割られる.1 / 割る return

*drawの中にこんな感じで書くと外接円がわかりやすいかもです。

color 255 R = sqrt(powf(res.0-a.0, 2) + powf(res.1-a.1, 2)) circle int(res.0)-R, int(res.1)-R, int(res.0)+R, int(res.1)+R, 0 pos int(a.0),int(a.1) : mes "A" pos int(b.0),int(b.1) : mes "B" pos int(c.0),int(c.1) : mes "C"



usagi

リンク

2024/3/7(Thu) 00:27:07|NO.101387

投稿して更新かったらGENKIさんからイイ感じのリンクがありますね。
被ってしまってすみません。

(youdaiさんはどんな公式を参考にしたのだろうか。。。)

★オマケ★外心、こんな感じで解く四則演算だけで済むので短いかも。(関数使わない)

_A = a.0*a.0 + a.1*a.1 : _B = b.0*b.0 + b.1*b.1 : _C = c.0*c.0 + c.1*c.1 cb = b.0-c.0, b.1-c.1 : ac = c.0-a.0, c.1-a.1 : ba = a.0-b.0, a.1-b.1 u_result.0 = (_A*cb.1 + _B*ac.1 + _C*ba.1) / (ba.0*cb.1 - cb.0*ba.1) * 0.5 u_result.1 = (_A*cb.0 + _B*ac.0 + _C*ba.0) / (cb.0*ba.1 - ba.0*cb.1) * 0.5



usagi

リンク

2024/3/7(Thu) 06:42:20|NO.101391

あっ、大変失礼いたしました。
vec2_multiply_valueというのが、ベクトルとスカラーの計算なんですね。

となると、"vec2_sin"という所が最初の原因かもです。
sinはベクトルでなく角度θの指定になりますので、
"sin2A"という数式はsinには2倍にした角度Aをという意味です。
最後の原因は"vec2_divide"で"vec2_divide_value"の方で、
sin2Aa+sin2Bb+sin2Ccのベクトルを
sin2A+sin2B+sin2Cのスカラーで割ればいいです。
イメージ)※実際はこの引数はベクトルの部分が先に計算しないとダメだけど
vec2_divide_value u_result, sin2Aa+sin2Bb+sin2Cc, sin2A+sin2B+sin2C

お詫びの品として。。。
三角形の重心に関しては3点の中心をとれればいいので、3つ足して3で割るとシンプルで簡単です。
※四角形だとダメ(吊り合わない)です


; ★高速化シンプル版 u_result = (a.0+b.0+c.0)/3f, (a.1+b.1+c.1)/3f



youdai

リンク

2024/3/8(Fri) 20:57:43|NO.101398

> GENKI さん

たくさんの参考資料の提示をありがとうございます。
Wikipediaにも数学的資料って載っているんですね。
百科事典的なものしか載っていないものと思っていました。

>d2cモジュール

実はすでにd2cモジュールも使って解こうとしたのですが、それでも自分には解けなかったので質問しました。
自分は五心の中の何かの概念をよく分かっていないのかもしれません。

> usagi さん

>※以前OpengGlのreflectionの式のHSP化の時に解説したかもしれませんが、
> 計算の結果がスカラーなのかベクトルなのか意識すると良いと思います。

>例として、この部分”sin2A角度 + sin2B角度 + sin2C角度”これはスカラーですよね。
>A角度は内積の定義を使って、cos(A) = ( ABベクACベクの内積 ) / (AB長さ * ACの長さ)
>解く事ができます。

アドバイスありがとうございます。
usagiさんのご指摘で、自分の中で、扱っている何の対象がスカラーで、扱っている何の対象がベクトルなのかハッキリしていなかったことを認識しました。

1つ1つの演算は決して難しくない感じなのに、全体として見ると非常に難しく感じるのが不思議な感じです。
参考文献等を見ても何か理論に飛躍があるような感じがして、自分が読み解けていない部分が多い気がします。
恐らく、何かの法則を自分は知らないんだろうなという感じがします。
例えば、四則演算で割り算だけその存在を知らないみたいな感じです。

>(youdaiさんはどんな公式を参考にしたのだろうか。。。)

以下のサイトを参考にしました。

三角形の五心の覚えておくべき性質を整理%20_%20高校数学の美しい物語
https://manabitimes.jp/math/628

例えばこのページの中の「初等幾何的性質」は辛うじて概念だけは分かっていそうな気はするのですが「解析幾何的性質」の部分に入ると全く分からない感じがします。

今回は、自分はもっと簡単な演算の種類から挑むべきなんだろうなという気がしました。

外心のスクリプトありがとうございます。
参考になるし、そのまま使うこともできるのでとても役立ちます。

今回この取り組みは、もっと自分の理解度が上がってから取り組むことにした方がいいような気がしました。
RPGでいうと高レベルモンスターに対して無理矢理低レベルで挑んでいるというような感覚がします。
今回の質問はここで中断して、最初の町の周辺のモンスターから挑んでみようと思います。



usagi

リンク

2024/3/12(Tue) 17:00:49|NO.101409

ご返答ありがとうございます。

>1つ1つの演算は決して難しくない感じなのに、全体として見ると非常に難しく

そうですよね。私も同じように思います。
結局は四則演算なのですが、公式になってしまうと難しいですよね。
例えばシグマなどの記号はよくでますが、
やっていることは計算の合計でプログラムならループと簡単なのですが、
式として書かれると何だか分かりにくいって感じます。


>高校数学の美しい物語
ガチの数学サイトですね!
ここからプログラムに落とし込む事は、難しいですがすごく勉強になると思います。

このページは基礎知識がある前提の様に思いましたので私も全部分かりませんし、
おっしゃられる通りこん棒で竜王に挑むようなものなので、
数学を理解したい目的であれば、まずはスライム(線形代数)あたりから倒すのが良いかと思いました。

※ちょっと探してみました※
https://math-notes.info/li/
予備知識の有無の分かりますし、各項目のページの"授業ノート"というボタンでpdfが見れます。


数学を理解したい目的で無ければ、(何か五心を利用した使ったソフトが作りたいなど)
プログラムに落とし込んでいるサイトもあると思いますので、それを利用するのが良いと思います。


以下、数学警察に怒られるかもしれませんが、感覚的なものとして。。。

>初等幾何
図形を定規とコンパス使って解きます。

ユークリッド幾何学的に扱うので、直感的に
納得、イメージしやすかったのかと思います。


>解析幾何
図形の性質を座標を使って代数的に解きます。

まるで推理の様に式を変形したり既知の解法なども道具として使ってるので、
公式という答えだけ書かれてもイメージしにくかったのかと思います。



youdai

リンク

2024/3/17(Sun) 13:08:42|NO.101418

>usagi さん

情報提供ありがとうございます。
これを元に少しづつ取り組んでいこうと思います。
全体をちょっとだけ目を通してみたのですが、自分にはとても難しいですが、逆行列など自分に身近な用語が出てくる箇所が特に興味深く感じました。
逆行列ってこういう風に作ればいいんだな、ということが分かりました。
自分にはさっぱり分からないところも多いのですが、これを元にやっていけば、自分で作れる部分も多くなるのだろうと思います。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.101380への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.