Skip to content

Instantly share code, notes, and snippets.

@ishiy1993
ishiy1993 / objects.hs
Last active November 27, 2015 21:52
HaskellでOpenGL(GLUT)を使って複数の三次元図形を配置する。
import Graphics.UI.GLUT
import Data.IORef
display :: IORef GLdouble -> IORef GLdouble -> DisplayCallback
display rot1 rot2 = do
clear [ColorBuffer, DepthBuffer]
r1 <- get rot1
r2 <- get rot2
loadIdentity
rotate r1 $ Vector3 1 0 0
@ishiy1993
ishiy1993 / 3d-sphere.hs
Created November 26, 2015 03:11
HaskellでOpenGL(GLUT)を使って、球体を描画する。
import Graphics.UI.GLUT
import Data.IORef
display :: IORef GLdouble -> IORef GLdouble -> DisplayCallback
display rot1 rot2 = do
clear [ColorBuffer, DepthBuffer]
r1 <- get rot1
r2 <- get rot2
loadIdentity
rotate r1 $ Vector3 1 0 0
@ishiy1993
ishiy1993 / 3d-cube2.hs
Created November 26, 2015 02:50
HaskellでOpenGL(GLUT)を使って、立方体を描画する。(GLUTの関数編)
import Graphics.UI.GLUT
import Data.IORef
display :: IORef GLdouble -> IORef GLdouble -> DisplayCallback
display rot1 rot2 = do
clear [ColorBuffer, DepthBuffer]
r1 <- get rot1
r2 <- get rot2
loadIdentity
rotate r1 $ Vector3 1 0 0
@ishiy1993
ishiy1993 / 3d-cube1.hs
Created November 26, 2015 02:25
HaskellでOpenGL(GLUT)を使って、立方体を描画する。(手動編)
import Graphics.UI.GLUT
import Data.IORef
cubeVertex :: [Vertex3 GLdouble]
cubeVertex = [ Vertex3 0 0 0
, Vertex3 1 0 0
, Vertex3 1 1 0
, Vertex3 0 1 0
, Vertex3 0 0 1
, Vertex3 1 0 1
@ishiy1993
ishiy1993 / keyboardmouse.hs
Created November 25, 2015 00:56
HaskellでOpenGL(GLUT)を使って、キーボードやマウスからの入力を受け付ける。
import Graphics.UI.GLUT
import Data.IORef
display :: IORef GLdouble -> DisplayCallback
display rot = do
clear [ColorBuffer]
r <- get rot
loadIdentity
rotate r $ Vector3 0 1 0
color (Color3 0 0 0 :: Color3 GLdouble)
@ishiy1993
ishiy1993 / resize.hs
Created November 25, 2015 00:21
HaskellでOpenGL(GLUT)を使って、ウィンドウのサイズを変えても描画されている図形の大きさが変わらないようにする。
import Graphics.UI.GLUT
display :: DisplayCallback
display = do
clear [ColorBuffer]
color (Color3 0 0 0 :: Color3 GLdouble)
renderPrimitive Polygon $ mapM_ vertex2d [
Vertex2 (-0.9) (-0.9)
, Vertex2 0.9 (-0.9)
, Vertex2 0.9 0.9
@ishiy1993
ishiy1993 / 2d-circle.hs
Created November 23, 2015 03:46
HaskellでOpenGL(GLUT)を使って、円を描画する。
import Graphics.UI.GLUT
display :: DisplayCallback
display = do
clear [ColorBuffer]
color (Color3 0 0 0 :: Color3 GLdouble)
renderPrimitive LineLoop $ mapM_ vertex2d [Vertex2 (0.5*cos t) (0.5*sin t) | t <- [0,0.01..2*pi]]
flush
where
vertex2d = vertex :: Vertex2 GLdouble -> IO ()
@ishiy1993
ishiy1993 / 2d-rectangle.hs
Created November 23, 2015 03:01
HaskellでOpenGL(GLUT)を使って、長方形を描画する。
import Graphics.UI.GLUT
display :: DisplayCallback
display = do
clear [ColorBuffer]
color (Color3 0 0 0 :: Color3 GLdouble)
renderPrimitive LineLoop $ mapM_ vertex2d [
Vertex2 (-0.9) (-0.9)
, Vertex2 0.9 (-0.9)
, Vertex2 0.9 0.9
@ishiy1993
ishiy1993 / 2d-triangle.hs
Created November 23, 2015 02:46
HaskellでOpenGL(GLUT)を使って、三角形を描画する。
import Graphics.UI.GLUT
display :: DisplayCallback
display = do
clear [ColorBuffer]
color (Color3 0 0 0 :: Color3 GLdouble)
renderPrimitive LineLoop $ mapM_ vertex2d [
Vertex2 0 0
, Vertex2 0.3 0
, Vertex2 0.3 0.4
@ishiy1993
ishiy1993 / 2d-line.hs
Created November 23, 2015 02:15
HaskellでOpenGL(GLUT)を使って、直線を描画する。
import Graphics.UI.GLUT
display :: DisplayCallback
display = do
clear [ColorBuffer]
color (Color3 0 0 0 :: Color3 GLdouble)
renderPrimitive Lines $ mapM_ vertex2d [
Vertex2 (-0.9) (-0.9)
, Vertex2 0.9 0.9
]