0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

fabric.js による多角形の描画をChatGPT 4o with canvas で作成

Posted at

ChatGPT 4o with canvas ベータ版を使って、fabric.js による多角形の描画を作成してみます。

概要

ちょっとさわった感じだと ChatGPT 4o with canvas ベータ版は、ChatGPT 4o よりもコード作成がしやすく、コードの変更内容もわかりやすい。
fabric.js による多角形の描画するコードを作成してみました。

作成した「Fabric.js Polygon Drawer」

  • 初期バージョン
    2024-11-25_23h37_34.png

  • いくつか変更したバージョン
    2024-11-25_23h38_08.png

ChatGPT 4o with canvas の画面

指定に応じて、コードが右側に表示されます。
かなりラフな指示でもコードを作成してくれました。

2024-11-25_23h37_07.png

コードの変更内容

コードの変更箇所を表示できます。

2024-11-25_23h49_23.png

作成したコード

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fabric.js Polygon Drawer</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.2.4/fabric.min.js"></script>
    <style>
        canvas {
            border: 1px solid #ccc;
        }
    </style>
</head>
<body>
    <h2>多角形を描く (3〜100角形)</h2>
    <label for="sides">角の数:</label>
    <input type="number" id="sides" min="3" max="100" value="6">
    <label for="bgColor">図形の背景色:</label>
    <input type="color" id="bgColor" value="#ffa500">
    <button onclick="drawPolygon()">描画</button>
    <canvas id="canvas" width="600" height="400"></canvas>

    <script>
        const canvas = new fabric.Canvas('canvas');

        function drawPolygon() {
            const sides = parseInt(document.getElementById('sides').value);
            if (sides < 3 || sides > 100) {
                alert('角の数は3から100までです');
                return;
            }

            const bgColor = document.getElementById('bgColor').value;

            const radius = 100;
            const centerX = canvas.getWidth() / 2;
            const centerY = canvas.getHeight() / 2;
            const points = [];

            for (let i = 0; i < sides; i++) {
                const angle = (i * 2 * Math.PI) / sides;
                const x = centerX + radius * Math.cos(angle);
                const y = centerY + radius * Math.sin(angle);
                points.push({ x, y });
            }

            const polygon = new fabric.Polygon(points, {
                left: centerX - radius,
                top: centerY - radius,
                fill: bgColor,
                stroke: 'blue',
                strokeWidth: 2,
                selectable: true
            });

            canvas.clear();
            canvas.add(polygon);
        }
    </script>
</body>
</html>

感想

ベータ版ということですが、なかなか使いやすくいい感じです。
ChatGPT 4o だとコードの応答が遅く感じますが、かなり改善されていると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?