{"description":"\u30ec\u30f3\u30c0\u30e9\u306b\u30ab\u30e1\u30e9\u4f4d\u7f6e\u3092\u6e21\u3059\u306e\u306b\u4fbf\u5229\u306a\u3088\u3046\u306b\u3001\u30ab\u30e1\u30e9\u306e\u4f4d\u7f6e\u3092\u884c\u5217\u3067\u4fdd\u6301\u3059\u308b\u3053\u3068\u306b\u3057\u305f\u3002\u3082\u3068\u3082\u3068\u3001 gluLookAt(pos[0], pos[1], pos[2], target[0], target[1], target[2], up[0], up[1], up[2]) \u3068\u3057\u3066\u3044\u305f\u306e\u3092\u5927\u9593\u9055\u3044\u3057\u3066\u3044\u305f\u3053\u3068\u304c\u5224\u660e\u3002\u4ee5\u4e0b\u3001\u76f4\u3057\u307e\u3057\u305f(5/15) glGetFloat(GL_MODELVIEW_MATRIX)\u3067\u898b\u306a\u304c\u3089\u76f4\u3057\u305f\u306e\u3067\u591a\u5206\u5927\u4e08\u592b\uff57 z=normalize(pos-target) x=normalize(numpy.cross(up, z)) y=normalize(numpy.cross(\u2026","type":"rich","title":"gluLookAt\u3092glLoadMatrix\u3067\u7f6e\u304d\u63db\u3048\u3066\u307f\u308b","author_name":"ousttrue","blog_url":"https://ousttrue.hatenadiary.org/","categories":["python","OpenGL"],"image_url":null,"height":"190","width":"100%","author_url":"https://blog.hatena.ne.jp/ousttrue/","blog_title":"\u4e09\u6b21\u5143\u65e5\u8a8c","provider_url":"https://hatena.blog","provider_name":"Hatena Blog","url":"https://ousttrue.hatenadiary.org/entry/20070514/1179147922","version":"1.0","published":"2007-05-14 22:05:22","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fousttrue.hatenadiary.org%2Fentry%2F20070514%2F1179147922\" title=\"gluLookAt\u3092glLoadMatrix\u3067\u7f6e\u304d\u63db\u3048\u3066\u307f\u308b - \u4e09\u6b21\u5143\u65e5\u8a8c\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>"}