Difference between revisions of "Shear (日本語)"
(Created page with "この関数は way の [https://love2d.org/forums/viewtopic.php?f=5&t=1692&p=16988|3D サイコロ転がしデモ]より借用されました。 [https://en.wiki...") |
m |
||
Line 30: | Line 30: | ||
{{#set:Author=User:way}} | {{#set:Author=User:way}} | ||
{{#set:Author=User:Taehl}} | {{#set:Author=User:Taehl}} | ||
+ | {{#set:LOVE Version=<0.8.0}} | ||
{{#set:Description=グラフィックスの剪断・斜行を行います!}} | {{#set:Description=グラフィックスの剪断・斜行を行います!}} | ||
== そのほかの言語 == | == そのほかの言語 == | ||
{{i18n|Shear}} | {{i18n|Shear}} |
Latest revision as of 04:02, 15 November 2016
この関数は way の サイコロ転がしデモより借用されました。 グラフィックスの剪断は (別名は"斜行") 座標変換を実行します (以降の全ての描画に影響します)。剪断前に love.graphics.push を実行することが推奨されています。
function shear(ox, oy, xx, xy, yx, yy)
local atan2, acos, tan = math.atan2, math.acos, math.tan
local ex, ey, fx,fy = xx-ox, xy-oy, yx-ox, yy-oy
if ex*fy<ey*fx then ex,ey,fx,fy=fx,fy,ex,ey end
local e,f = (ex*ex+ey*ey)^.5, (fx*fx+fy*fy)^.5
ex,ey = ex/e, ey/e
fx,fy = fx/f, fy/f
local desiredOrientation=atan2(ey+fy,ex+fx)
local desiredAngle=acos(ex*fx+ey*fy)/2
local z=tan(desiredAngle)
local distortion=((1+z*z)/2)^.5
love.graphics.translate(ox, oy)
love.graphics.rotate(desiredOrientation)
love.graphics.scale(1, z)
love.graphics.rotate(-pi/4)
love.graphics.scale(e/distortion,f/distortion)
end
LÖVE 0.8.0 から利用可能
このコードは LÖVE version 0.8.0 で廃止されました。
場面全体の剪断/斜行を行うために love.graphics.shear を、または描画可能な単一物の剪断/斜行を行うために love.graphics.draw にて剪断 (shear) 引数を使用することができます。
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info