Бывалый
Регистрация: 17.12.2011
Сообщений: 862
Написано 443 полезных сообщений (для 1,133 пользователей)
|
Ответ: BoundingBox
Сообщение от burovalex
Работает только с прямым расположением бокса.
А заменять одну строку (FitMesh), на 20 - не вижу смысла..
|
Ну даже и не знаю, у меня в IDE всего четыре лишних строчки) да и работает быстрее чем FitMesh, а повороты тоже можно контролировать, надо просто сделать это! 
вот аналог с FitMesh

Function Detect(sx#,sy#,sz#,sr#,bx#,by#,bz#,bw#,bh#,bd#) Local dmin#=0 Local sr2#=sr*sr If sx < bx dmin=dmin+((sx-bx)*(sx-bx)) Else If sx>(bx+bw) dmin=dmin+(((sx-(bx+bw)))*((sx-(bx+bw)))) EndIf If sy < by dmin=dmin+((sy-by)*(sy-by)) Else If sy>(by+bh) dmin=dmin+(((sy-(by+bh)))*((sy-(by+bh)))) EndIf If sz < bz dmin=dmin+((sz-bz)*(sz-bz)) Else If sz>(bz+bd) dmin=dmin+(((sz-(bz+bd)))*((sz-(bz+bd)))) EndIf If dmin#<=sr2# Then Return True Else Return False End Function
width=640 height=480
Graphics3D width,height,0,2 SetBuffer BackBuffer()
MoveMouse width/2,height/2
cam=CreateCamera() PositionEntity cam,0,100,-100 RotateEntity cam,30,0,0
light=CreateLight()
bx#=0 ; box x by#=0 ; box y bz#=0 ; box z bw#=50 ; box width bh#=50 ; box height bd#=50 ; box depth sx#=0 ; sphere x sy#=0 ; sphere y sz#=0 ; sphere z sr#=5 ; sphere radius
box=CreateCube() EntityColor box,255,255,0 FitMesh box,0,0,0,bw,bd,bh PositionEntity box,bx,by,bz
sphere=CreateSphere() EntityColor sphere,255,0,0 ScaleEntity sphere,sr,sr,sr
PositionEntity sphere,sx#,sy#,sz#
While Not KeyDown(1)
mxs=mxs+MouseXSpeed() mys=mys+MouseYSpeed()
RotateEntity cam,mys,-mxs,0 MoveEntity cam,0,0,MouseDown(1)-MouseDown(2)
If KeyDown(203) Then sx#=sx#-1 If KeyDown(205) Then sx#=sx#+1 If KeyDown(19) Then sy#=sy#+1 If KeyDown(33) Then sy#=sy#-1 If KeyDown(200) Then sz#=sz#+1 If KeyDown(208) Then sz#=sz#-1
sx#=sx#+mx# sy#=sy#+my# sz#=sz#+mz#
PositionEntity sphere,sx#,sy#,sz#
RenderWorld If Detect(sx#,sy#,sz#,sr#,bx#,by#,bz#,bw#,bh#,bd#)=True Then Text 0,0,"Detec Sphere" Flip
Wend
Тормоза жуткие 
|