ããä¸ã¤ã®ãã£ã±ãæºãã·ãã¥ã¬ã¼ã¿ã®ä½ãæ¹
å æ¥flashrodããã®ã¨ãããåèã«おっぱいをシミュレートãã¦ã¿ããã ãã©ãªããå¤ãªæããååã«ã¯ãæºãã¦ãããããªãã¦ã«ããæ°ãå¤ãã£ã¦ããã¨ãããããã£ã±ããããªãã¦ãå°»ã§ããããã¨ãè¨ãããå§æ«ã
ããããçç±ããã©ã¡ã¼ã¿ã®èª¿æ´ãªã®ããå®è£ ãç³ãªã®ãããã®ä¸¡æ¹ãªã®ãããåãããªããã ãã©ãä½ã¯ã¨ããããã®æ²ç·ããã£ã±ãã«è¦ããªãã¨è¨ãæè¦ã«ã¯é ·ããããå¾ãªããé°ã§ã¡ãã£ã¨åæ¯ãªè£æ£ãã¦ã¦ããã ãããªã
ã¨ãããã¨ã§ä»æ¥ã®åå¾ã¯ä»äºãã¦ããµããããªãããã¡ãã£ã¨ãã£ã±ãã«æãã馳ãã¦ã¿ãã
ãã£ã±ãã¨ã¯ä½ãã
YourAVHostã»åããçã®ã溢ããéåç¥ã®åãåãã¤ã¤çèãéããã¤ãã«ç§ã¯æããå¾ãããã£ã±ãã¯ãå£ã«ã¤ããæ°´è¢ããããã£ãã身ããµããããã
以åã®ã°ã-質ç¹ã¢ãã«ã®æå ãããã¯è¢é¨åã«ã ãã¨ãããã¦éè¦ãªãæ°´ãã®é¨åãå¿ãããã¨ã§ã¯ãªãããæã ããã£ã±ãã«æ±ãããã®ã¯è¡¨ç®ä¸æãï¼å¦ãæã ããã£ã±ããæãæµ®ãã¹ãã¨ãããã®å¦æ³ã¯å¿ ããã·ãã·ã¨ãããéã¿ãããå¼µãããä¼´ããã¤ã¾ãéè¦ãªã®ã¯ããã«å«ã¾ããæ°´ã ã£ãã®ã ã
ãã£ã±ãã·ãã¥ã¬ã¼ã¿ã®ç®æãã¨ããã¯ãè¦ã人ã«ãä¸ã«ããæ°´ãæ³åãããããã¨ã«ããã
ãã®æãã«åºã¥ããã·ãã¥ã¬ã¼ã¿
http://blog.technohippy.net/Oppai.swf ã[*1]
ã©ãããªï¼ããªï¼
å½¢ãåãããããªãã ãããã£ã¨ãããã£ã±ãã ã¨æããã ãã©ï¼
ã¨è¨ããã¨ã§ä»¥ä¸è§£èª¬
ã¾ããååä¸ã«ããã¤ãã®è³ªç¹ãé ç½®ãã¦ãããããè¢ç¶ã«ç¹ãã
ã§ãè¢ã®å å´ããæ°´å§ããããã
æ°´å§ã¯è¢å
¨ä½ã«ããã£ã¦åã大ããã§ãåã®åãã¯å£é¢ã¨åç´ããå£é¢ã«åç´ãã¨ããã®ã¯è³ªç¹ã«ç¹ãã辺ã®ãã¯ãã«ãåæï¼æ£è¦åãã¦å¾ããã¨ã«ãããï¼ããããããªã人ã¯ä¸å¦ã§ä½ãã£ã¦ããã ãããªãã¦ãã¹ã«ã«ã®æ³åãã°ã°ãã¹ãï¼
ãã¨ã¯è³ªç¹ã«ãããéåã¨æ°´å§ãé©å½ã«ãã©ã³ã¹ã¨ã£ã¦ãåæã«ããæãã«ãã·ãã·ãã¦ãããããã£ã±ãã£ã±ãã¯ãªããããã»ã»ã»ã
å°æ¥ã®å±æ
3Dã§ãå ¨ãåãæ¹æ³ã§ããã£ã½ãã§ããã¯ããåçç¶ã«è³ªç¹ãé ç½®ãã¦æ°´å§ã¯è³ªç¹ã«éã¾ããã¯ãã«ã®åæãæ£è¦åããã¨ã¯ç©çã¨ã³ã¸ã³ä»»ãã
ãã£ã±ãã®ãµã¤ãºã¯ååããã大ãããããå°ãããããã§ããã£ã±ãã®å½¢ã¯æ°´å§ã®å¤§ããã§ãããã調æ´ã§ããã»ã»ã»ã¯ãã
ä½è«
ããâ質ç¹ã§ãã¾ãè¡ããªãçç±ã ãã©ãä¸ã«æ¸ããæ°´äºã
ã¯çãæ»ã£ãã ãã§ããã¾æå³ãªãã¦ãå®éã¯è³ªç¹ã®åå¸ãããããããããªãããªã¨ãã¡ããã¨å
¨ä½ãä¸è§é åã«åå²ãã¦FEMããã°ãããªãã«ãããã¯ãã»ã»ã»ã¨æã£ã¦ãã既にあったã
ã½ã¼ã¹
Oppai.as (ãã£ã±ãã·ãã¥ã¬ã¼ã¿æ¬ä½)
package { import Box2D.Common.Math.b2Vec2; import Box2D.Dynamics.b2Body; import Box2D.Dynamics.Joints.b2DistanceJoint; import Box2D.Dynamics.Joints.b2DistanceJointDef; import flash.events.MouseEvent; import flash.geom.Point; import flash.ui.Mouse; import AppBase; public class Oppai extends AppBase { private var bodies:Array = new Array(); public function Oppai() { super({useGround: false, gravity:1000.0}); } override protected function initialize():void { var radius:int = 80; var nop:int = 20; for (var i:int = 0; i <= nop; i++) { var theta:Number = (i / nop) * Math.PI var p:Point = new Point(radius * Math.sin(theta), 200 - radius * Math.cos(theta)); var fixed:Boolean = ([0, nop].indexOf(i) != -1); var mp:b2Body = createMassPoint(p, fixed); bodies.push(mp); } for (i = 1; i <= nop; i++) { var jointDef:b2DistanceJointDef = new b2DistanceJointDef(); jointDef.body1 = bodies[i - 1]; jointDef.body2 = bodies[i]; jointDef.anchorPoint1 = bodies[i - 1].GetCenterPosition(); jointDef.anchorPoint2 = bodies[i].GetCenterPosition(); world.CreateJoint(jointDef); } } override protected function draw():void { graphics.clear(); for (var i:int = 1; i < bodies.length - 1; i++) { var prevBody:b2Body = bodies[i - 1]; var body:b2Body = bodies[i]; var nextBody:b2Body = bodies[i + 1]; var vec1:b2Vec2 = body.GetCenterPosition().Copy(); vec1.Subtract(prevBody.GetCenterPosition()); var vec2:b2Vec2 = body.GetCenterPosition().Copy(); vec2.Subtract(nextBody.GetCenterPosition()); vec1.Add(vec2); vec1.Normalize(); vec1.Multiply(1450); body.ApplyForce(vec1, body.GetCenterPosition()); } drawOppai(); } private function drawOppai():void { graphics.lineStyle(1, 0xffffff, 1); var firstPoint:b2Vec2 = bodies[0].GetCenterPosition(); graphics.moveTo(firstPoint.x, 0); graphics.lineTo(firstPoint.x, firstPoint.y); for (var k:int = 1; k < bodies.length - 1; k++) { var controlPoint:b2Vec2 = bodies[k].GetCenterPosition(); var anchorPoint:b2Vec2 = controlPoint.Copy(); anchorPoint.Add(bodies[k+1].GetCenterPosition()); anchorPoint.Multiply(0.5); graphics.curveTo(controlPoint.x, controlPoint.y, anchorPoint.x, anchorPoint.y); } var lastPoint:b2Vec2 = bodies[bodies.length-1].GetCenterPosition(); graphics.lineTo(lastPoint.x, lastPoint.y); graphics.lineTo(lastPoint.x, 1000); } } }
AppBase.as (Box2Dã§éã¶ã¨ãã«å
±éã§ä½¿ããããªã¨ãããé©å½ã«ã¾ã¨ãããã®)
package { import Box2D.Collision.b2AABB; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.Sprite; import flash.events.TimerEvent; import flash.geom.Point; import flash.utils.Timer; public class AppBase extends Sprite { public var world:b2World; public var ground:b2Body; protected var m_physScale:Number = 1.0; private var options:Object; private static var DEFAULT_OPTIONS:Object = {useGround:true, gravity:300.0}; public function AppBase(opt:Object=null) { if (opt != null) options = opt else options = {}; world = createWorld(); if (getOptValue('useGround')) ground = createGround(); initialize(); startSimulation(); } protected function getOptValue(key:String):* { if (options[key] != null) { return options[key]; } else { return DEFAULT_OPTIONS[key]; } } protected function initialize():void { } private function createWorld():b2World { var aabb:b2AABB = new b2AABB(); aabb.minVertex.Set(-1000.0, -1000.0); aabb.maxVertex.Set(1000.0, 1000.0); var gravity:b2Vec2 = new b2Vec2(0.0, getOptValue('gravity')); var doSleep:Boolean = true; return new b2World(aabb, gravity, doSleep); } private function createGround():b2Body { var wallBoxDef:b2BoxDef = new b2BoxDef(); wallBoxDef.extents.Set(680/m_physScale, 10/m_physScale); var wallBodyDef:b2BodyDef = new b2BodyDef(); wallBodyDef.position.Set(0/m_physScale, 300/m_physScale); wallBodyDef.AddShape(wallBoxDef); var ground:b2Body = world.CreateBody(wallBodyDef); ground.GetShapeList().m_restitution = 0.5; return ground; } private function startSimulation(step:Number=1.0/60, iterations:int=10):void { var timer:Timer = new Timer(10); timer.addEventListener(TimerEvent.TIMER, function(event:TimerEvent):void { world.Step(step, iterations); draw(); }); timer.start(); } protected function draw():void { graphics.clear(); } protected function createMassPoint(point:Point, fixed:Boolean=false):b2Body { var boxDef:b2BoxDef = new b2BoxDef(); boxDef.extents.Set(1, 1); if (!fixed) boxDef.density = 0.1; var bodyDef:b2BodyDef = new b2BodyDef(); bodyDef.position.Set(point.x, point.y); bodyDef.AddShape(boxDef); return world.CreateBody(bodyDef) } } }
*1:ä»ã¯ããªãæ´æ°ããã¡ãã£ã¦ã¾ããã©ãEnterã¨Tabãæ¼ãã¦ã·ã«ã¨ããã«ãã¦ã"<"ãã¼ã§dampingã99ã«è¨å®ããã¨ãã®ã¨ãã¨ã»ã¼åãã§ãï¼2/10 注è¨ï¼
ã¾ã¡ããããã
åé¡
mysql> SELECT * FROM color_themes WHERE (key IN (1,2,3,4,5)); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key IN (1,2,3,4,5))' at line 1
çã
mysql> SELECT * FROM color_themes WHERE (color_themes.key in (1,2,3,4,5)); +----+------+------+ | id | name | key | +----+------+------+ | 1 | ç½ | 1 | | 2 | é» | 2 | | 3 | 赤 | 3 | | 4 | é | 4 | | 5 | é» | 5 | +----+------+------+ 10 rows in set (0.00 sec)
解説
keyã¯äºç´èªã ãããã¼ãã«åæå®ããã«æ¸ãã¡ãé§ç®ã
ææ³
ãã¼ãã«ä½ãæã«å±ã£ã¦ãããã