サイコロの展開図を書かせよう
概念的な理解と実装
ChatGPTにSVGでテキスト出力を行わせることによって、絵を描くことが出来る(ChatGPTにグラフィックを書かせる)。
ChatGPTはインターネット上の膨大なデータで学習を行わせているとのことだが、基本的には言語モデルであるため、学習の大半はテキストベースのものであると推測できる。なので「絵が描ける」といってもそれっぽい絵でお茶を濁す程度のものなのではと自分は考えていた。
テキストデータオンリーでの学習と考えた場合、例えば目が見えず、触覚もない人に言葉だけで物体の形を教えたとする場合、定義は覚えられるかもしれないが、概念的なことは理解できないだろう。言葉で「これはこういう形のものですよ」と教えたとしても、それを元に絵を描くのは難しいのではないか?
そう考えて、今回はChatGPTが定義から絵を上手に書くことが出来るのかを調べてみたいと思う。
サイコロの展開図1(GPT-3.5)
サイコロの展開図を描いて、svg形式のテキストで出力してください章
下は、SVG形式のテキストで描かれたサイコロの展開図の例です。このコードをテキストエディタにコピーし、.svgの拡張子で保存することで、SVGファイルとして保存できます。
svg<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<rect x="0" y="0" width="200" height="200" fill="#fff" />
<rect x="20" y="20" width="80" height="80" stroke="#000" stroke-width="4" fill="#fff" />
<rect x="100" y="20" width="80" height="80" stroke="#000" stroke-width="4" fill="#fff" />
<rect x="20" y="100" width="80" height="80" stroke="#000" stroke-width="4" fill="#fff" />
<rect x="100" y="100" width="80" height="80" stroke="#000" stroke-width="4" fill="#fff" />
<circle cx="50" cy="50" r="10" fill="#000" />
<circle cx="50" cy="80" r="10" fill="#000" />
<circle cx="50" cy="110" r="10" fill="#000" />
<circle cx="50" cy="140" r="10" fill="#000" />
<circle cx="80" cy="50" r="10" fill="#000" />
<circle cx="80" cy="80" r="10" fill="#000" />
<circle cx="80" cy="110" r="10" fill="#000" />
<circle cx="80" cy="140" r="10" fill="#000" />
<circle cx="110" cy="50" r="10" fill="#000" />
<circle cx="110" cy="80" r="10" fill="#000" />
<circle cx="110" cy="110" r="10" fill="#000" />
<circle cx="110" cy="140" r="10" fill="#000" />
<circle cx="140" cy="50" r="10" fill="#000" />
<circle cx="140" cy="80" r="10" fill="#000" />
<circle cx="140" cy="110" r="10" fill="#000" />
<circle cx="140" cy="140" r="10" fill="#000" />
</svg>
このコードは、サイコロの展開図を示しています。四角形の輪郭には黒い線が引かれ、内部は白で塗りつぶされています。丸い点はサイコロの目を表しており、それぞれが黒く塗りつぶされています。このコードを保存し、Webブラウザーで開くことで、SVG画像を表示することができます。
SVGのグラフィックを確認すると以下の通りとなる。(以降、SVGのテキストは表示せず、グラフィックのスナップショットのみ表示する) 展開図の概念が人類とは少し異なるようだ
展開図は、切り取って折り曲げると立方体が出来るものです。この図面はうまく組み立てられません。正しく書き直してください
立方体の展開図を書いてください
この展開図には、正方形が描かれていますが、それぞれが一部重なっているため、正しい形状を形成するように配置されています。また、各面には、線で輪郭が描かれています。これらの線を折り曲げることで、立方体を形成することができます。
展開図を印刷し、切り取り、折り曲げると、以下のように立方体を作ることができます。
サイコロを斜めから見た投影図を書いてください
サイコロの展開図2(GPT-4)
サイコロの展開図を描いて、SVG形式のテキストを出力してください
サイコロの展開図を描くには、SVG形式のテキストで構成された図形を出力する必要があります。以下に、簡単なサイコロの展開図を示すSVGテキストを提供します。これをウェブページやSVGエディタに貼り付けることで、サイコロの展開図を表示できます。
html<svg xmlns="http://www.w3.org/2000/svg" width="210" height="140" viewBox="0 0 210 140">
<!-- 外枠 -->
<rect x="1" y="1" width="208" height="138" fill="none" stroke="black" />
<!-- サイコロの各面 -->
<rect x="30" y="30" width="30" height="30" fill="white" stroke="black" />
<rect x="60" y="30" width="30" height="30" fill="white" stroke="black" />
<rect x="90" y="30" width="30" height="30" fill="white" stroke="black" />
<rect x="60" y="60" width="30" height="30" fill="white" stroke="black" />
<rect x="60" y="0" width="30" height="30" fill="white" stroke="black" />
<rect x="60" y="90" width="30" height="30" fill="white" stroke="black" />
<!-- 数字のドット -->
<!-- 1 -->
<circle cx="75" cy="15" r="2" fill="black" />
<!-- 2 -->
<circle cx="45" cy="45" r="2" fill="black" />
<circle cx="75" cy="75" r="2" fill="black" />
<!-- 3 -->
<circle cx="105" cy="45" r="2" fill="black" />
<circle cx="135" cy="60" r="2" fill="black" />
<circle cx="105" cy="75" r="2" fill="black" />
<!-- 4 -->
<circle cx="15" cy="45" r="2" fill="black" />
<circle cx="15" cy="75" r="2" fill="black" />
<circle cx="45" cy="45" r="2" fill="black" />
<circle cx="45" cy="75" r="2" fill="black" />
<!-- 5 -->
<circle cx="75" cy="105" r="2" fill="black" />
<circle cx="45" cy="105" r="2" fill="black" />
<circle cx="75" cy="135" r="2" fill="black" />
<circle cx="45" cy="135" r="2" fill="black" />
<circle cx="60" cy="120" r="2" fill="black" />
<!-- 6 -->
<circle cx="135" cy="45" r="2" fill="black" />
<circle cx="135" cy="60" r="2" fill="black" />
<circle cx="135" cy="75" r="2" fill="black" />
<circle cx="165" cy="45" r="2" fill="black" />
<circle cx="165" cy="60" r="2" fill="black" />
<circle cx="165" cy="75" r="2" fill="black" />
</svg>
このSVGテ
目の位置が面の外側に描かれています。修正してください
1から6の目はrectで描かれたそれぞれの面の内側に描かれなければなりません。修正してください
6の目の位置が右側にズレてます。修正してください
良いですね。外枠は必要ないので消してください。一の目は少し大きめに描いて、色を赤にしてください
このサイコロを斜め上から見た投影図を描いてください
変な投影図です。面が六角形に見えるところがあります
2の面と3の面が正しく接続されていません
3の目と4の目が見えるように描いてください。
<!-- サイコロの形状 -->
<rect x="40" y="40" width="80" height="80" fill="white" stroke="black" />
<polygon points="40,40 80,20 120,40 80,60" fill="white" stroke="black" />
<polygon points="0,40 40,20 80,40 40,60" fill="white" stroke="black" />
<!-- 数字のドット -->
<!-- 1 -->
<circle cx="100" cy="30" r="3" fill="red" />
<!-- 2 -->
<circle cx="50" cy="80" r="2" fill="black" />
<circle cx="70" cy="100" r="2" fill="black" />
<!-- 3 -->
<circle cx="30" cy="80" r="2" fill="black" />
<circle cx="10" cy="60" r="2" fill="black" />
<circle cx="10" cy="80" r="2" fill="black" />
<!-- 4 -->
<circle cx="50" cy="50" r="2" fill="black" />
<circle cx="30" cy="50" r="2" fill="black" />
<circle cx="50" cy="70" r="2" fill="black" />
<circle cx="30" cy="70" r="2" fill="black" />
</svg>
コメント
コメントを投稿