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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

解決済

Processingでfill()で値を指定したら円が塗りつぶされる。ellipse()を使わない方法

ghwchikxpgns
ghwchikxpgns

総合スコア5

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

2回答

1リアクション

1クリップ

120閲覧

投稿2022/11/24 14:21

編集2022/11/24 14:28

前提

目的:
・Processingでベジェ曲線を使って円を表現したい。(4分円以外も表現可)
*ellipse()を使えば簡単に円を描画できるが4分円である。
・fill()の値を指定したら円が塗りつぶされる。

問題:
・「発生している問題」のプログラムだと円を完全に塗りつぶせない。
・「試したこと」のプログラムなら円を塗りつぶすことができるが、簡潔にしたい。
*塗られていない部分が正多角形なので正多角形描画プログラムを追加

発生している問題

Java

void setup() { size(960, 960); background(255); } void draw() { strokeWeight(1); stroke(0,0,0); fill(255,0,0); translate(x, y); int r = 400; int p = 4; // p -> Num of polygon float a = TWO_PI / p; float c = tan(a * 0.25) * 4/3; pushMatrix(); beginShape(); for(int v = 0; v < p; v++) // v -> vertexIndex { float x0_0 = r * cos(a * v + HALF_PI); float y0_0 = r * sin(a * v + HALF_PI); float x1_0 = r * cos(a * (v+1) + HALF_PI); float y1_0 = r * sin(a * (v+1) + HALF_PI); float x0_1 = x0_0 - (r * c * cos(a * v)); float y0_1 = y0_0 - (r * c * sin(a * v)); float x1_1 = x1_0 + (r * c * cos(a * (v+1))); float y1_1 = y1_0 + (r * c * sin(a * (v+1))); bezier(x0_0, -y0_0, x0_1, -y0_1, x1_1, -y1_1, x1_0, -y1_0); } endShape(CLOSE); popMatrix(); }

・上記のプログラムの場合、円が完全に塗りつぶされない。
イメージ説明

試したこと

Java

void setup() { size(960, 960); background(255); } void draw() { strokeWeight(1); stroke(0,0,0); fill(255,0,0); translate(x, y); int r = 400; int p = 4; // p -> Num of polygon float a = TWO_PI / p; float c = tan(a * 0.25) * 4/3; pushMatrix(); beginShape(); for(int v = 0; v < p; v++) // v -> vertexIndex { float x0_0 = r * cos(a * v + HALF_PI); float y0_0 = r * sin(a * v + HALF_PI); float x1_0 = r * cos(a * (v+1) + HALF_PI); float y1_0 = r * sin(a * (v+1) + HALF_PI); float x0_1 = x0_0 - (r * c * cos(a * v)); float y0_1 = y0_0 - (r * c * sin(a * v)); float x1_1 = x1_0 + (r * c * cos(a * (v+1))); float y1_1 = y1_0 + (r * c * sin(a * (v+1))); bezier(x0_0, -y0_0, x0_1, -y0_1, x1_1, -y1_1, x1_0, -y1_0); } endShape(CLOSE); popMatrix(); noStroke(); pushMatrix(); beginShape(); for(int v = 0; v < p; v++) // v -> vertexIndex { vertex(r * sin(TWO_PI*v / p), -r * cos(TWO_PI*v / p)); // TWO_PI = 2 * PI } endShape(CLOSE); popMatrix(); }

・塗りつぶされなかった部分は正多角形になっている。
・塗りつぶされなかった部分を正多角形で塗りつぶす。
イメージ説明

補足情報(FW/ツールのバージョンなど)

使用したソフト:Processing4

TN8001👍を押しています

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

thkana

2022/11/24 22:45

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11271515476 「マルチポスト」に際してはローカルルールがあるので対処してください。 https://teratail.com/help#posted-otherservice 「やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。 また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。」
ghwchikxpgns

2022/11/25 01:01 編集

取り敢えずteratailを知らない人の為に、複数のサイトに投稿した方がどちらかに回答がつくと考え投稿しました。 そして片方に回答が付き、解決したら未回答の方のサイトに解決URLを貼るつもりで考えていました。 マルチポストの推奨がされていないことから、teratailで解決した為、知恵袋の方は削除しました。
1T2R3M4

2022/11/25 04:11

>マルチポストの推奨がされていないこと 登録した時からわかっていたことでは。 質問する時にも項目は表示されていたような気がしますが。
thkana

2022/11/25 04:13

> 知恵袋の方は削除しました。 解決には至らなかったにしても、あなたの質問に多少なりとも時間を使った回答者の行為?好意は無に帰しても構わない、という考えなのですね。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。