マガジンのカバー画像

アルちゃんの魔術部

23
運営しているクリエイター

記事一覧

色々な曲線。

この記事はだいたいで書いてあります。ちょっとずつちゃんとします。

次数一次曲線

曲がらない、直線。始点と終点がある。基本的に制御点2個。

二次曲線

一回だけ曲がる。始点と終点と曲げ担当制御点がある。基本的に制御点3個。

三次曲線

二回曲がる。始点と終点と曲げ担当制御点が2個ある。基本的に制御点4個。

N次曲線

それ以上。
単純に考えると曲線の次数は制御点の個数に伴って増加していくが

もっとみる

重心座標の恐怖

重心座標と逆変換三角形の内側の座標v[x,y]は[0-1]のパラメータ[t1,t2,t3]を3つ用いることで表せます。すなわち入力[t1,t2,t3]であって、出力v[x,y]です。正確に言うと三角形を構成する座標値V1,V2,V3も必要ですが、これは既知、すでにあきらかであるとします。つまり画面上に最初からあれということです。

重心座標は入力v[x,y]として、出力[t1,t2,t3]とするこ

もっとみる

Polylineあれやこれや

Polyline : List<Vector2D>の末尾とindex[0]が繋がっていないもの
Polygon : 繋がってるもの

GetLength
ポリラインの長さを求める

float GetLength(ArrayList<PVector> polyline){ float sum = 0; for(int i = 0; i<polyline.size()-1; i++) { P

もっとみる

ノードン的なものを作るドン!その001



必要なこと

・(InputOutputValue) : ノード同士が単一の、あるいは複数の、及び組み合わされたパラメータをやり取りする。
・(InputPort) : ノードが受け取ったパラメータはノードによって解釈され、変更され、修正される。
・(Node) : ノードはパラメータを保持したり反映したり、あるいはGUI(Graphigs User Interface)や図形などの表現により

もっとみる

魔改造イージング関数

こちらのチートシートを参考にします。

イージングはアニメーションで使用されるのが主だと思われますが、世の中には関数の形に劣情を催す変態がいるのでその人ら用です。

まず関数の形を簡単に表示できるようにしておきます。

import java.util.List;List<Float> glist = new ArrayList<Float>();interface IEaseFunc{ f

もっとみる

ランバート反射(最小限)

参考図書
CによるCGレイトレーシング (Information & computing) 単行本 – 1992/8/1村岡一信 (著), 千葉則茂 (著)

3次元の球に光を当てた時の光の反射について考えます。

しかし真面目に3次元データを表示することを考える場合、全部自分で実装しようとするとあれやこれやとめんどくさく、ありものを使うとそもそも反射部分を実装する必要すらなくなってしまいます。

もっとみる

グリッドであれこれする

このページは途中です。

processingを用います。

グリッドあれやこれやグリッドとは以下のようなものです。

こんなようなものでもただ単純に線として描画したい場合もあればマス目として(特に色を塗ったりして)描画したい場合もあり、また交点の座標を得たい場合もあります。そこからさらに様々な加工変形を試みたい場合もあります。

単純にグリッドを構成する線の描画のみする場合(縦断横断型)

vo

もっとみる

魔改造メタボール

この記事は想像で書いてます。

この記事はprocessingで書いてます。

良く知られたメタボールは陰関数曲面がなんちゃらかんちゃら、f(x,y)=0なりf(x,y,z)=0なる点の集合とかなんとか言われておることでしょう。
学校で習うy=f(x)なるやつは、入力1個で出力1個。横軸に入力をとって縦軸に出力をとれば簡単にグラフにできるしプログラムに落とし込むのも容易です。
z=f(x,y)なら

もっとみる

描画関数抽象化ver1.1

前回

関連項目

前回のLinerStructure関数を改造することを考える。

//前回のLinerStructure関数static void LinerStructure( PGraphics pg, List<PVector> source, SamplingMethodS sampling, UnittingMethodSi unitting, DrawMethod drawe

もっとみる

描画関数抽象化ver1.0

processing4を用います。

processingの基本的な描画関数。

line(x1, y1, x2, y2);circle(x, y, extent);

それをループを用いて使用する場合の例。

static void DrawPoints(PGraphics pg, Collection<PVector> points, float radius) { for(PVecto

もっとみる

トランスフォーマー

processing4.0をもちいます。

適当に作った概念や名称が当然のように登場することがあります。
他所で使うとポカンとされます。

基本的な考え方。

変換対象(図形、パラメータ)と、変換変形操作を分離する。その後レゴみたいに組み立てる。

変換変形操作とは、平行移動、拡大縮小、回転などといったアフィン変換。補間、クリッピング、ブーリアン演算、あるいは3次元ベクトルを2次元平面に焼き付ける

もっとみる

うずまき

prosessingが4.0になりました。
なのでvarやラムダ式を使ったり使わなかったりします。

ベクトル操作は以下の記事を参照

渦の基本:
何らかの方法で円を描きながら円の半径を縮めたり伸ばしたりすると渦になる。

渦の基本形、パラメトリック円型。List<PVector> MakeUzumaki_circle( PVector cv, float radius, float start_

もっとみる

Polylineテクスチャ

直線や曲線に座標群を張り付けて、直線曲線に沿った自由自在な装飾や模様、あるいはタッチを目指す。

スプラインはこちらへん。

ベクトル系のメソッドはこちらへん。

Drawなんちゃら系のメソッドの基本パターン。他に可変長引数のものを使ったりしますが、ここでは省略。なのでDrawLinerClose(v0,v1,v2)みたいな使い方はコピペするとエラーでます。

void DrawLiner(Arr

もっとみる

領域対領域変換

processingでできてます。

PointToLine
void PointToLine(PVector p, PVector sv, PVector ev, float resolution){ for(float t = 0; t<1; t+=resolution) { PVector tv = Lerp(sv,ev,t); line(p.x,p.y,tv.x,tv.y);

もっとみる