#include <acknex.h>
#include <default.c>
#include "vec3d.c";
VECTOR vec1;
VECTOR vec2;
VECTOR vec3;
VECTOR temp;
LL_SPHERE sphere;
LL_LINE3D line;
STRING* toWrite = "#30";
int isIntersecting = OFF;
var radius = 100;
VECTOR center;
void draw_circle(VECTOR* pos, var radius)
{
var angle = 0;
vec_set(temp,vector(radius*cos(angle),radius*sin(angle),0));
vec_add(temp,center);
draw_line(temp,NULL,0);
draw_line(temp,vector(255,255,255),100);
while(angle <= 360)
{
vec_set(temp,vector(radius*cos(angle),radius*sin(angle),0));
vec_add(temp,center);
draw_line(temp,vector(255,255,255),100);
angle += 10;
}
}
void draw_info()
{
while(1)
{
str_for_num(toWrite,vec1.x);
draw_text(toWrite,20,20,vector(255,255,255));
str_for_num(toWrite,vec1.y);
draw_text(toWrite,20,40,vector(255,255,255));
str_for_num(toWrite,vec1.z);
draw_text(toWrite,20,60,vector(255,255,255));
str_for_num(toWrite,vec2.x);
draw_text(toWrite,20,80,vector(255,255,255));
str_for_num(toWrite,vec2.y);
draw_text(toWrite,20,100,vector(255,255,255));
str_for_num(toWrite,vec2.z);
draw_text(toWrite,20,120,vector(255,255,255));
str_for_num(toWrite,vec3.x);
draw_text(toWrite,20,140,vector(255,255,255));
str_for_num(toWrite,vec3.y);
draw_text(toWrite,20,160,vector(255,255,255));
str_for_num(toWrite,vec3.z);
draw_text(toWrite,20,180,vector(255,255,255));
str_for_num(toWrite,mouse_pos.x);
draw_text(toWrite,20,280,vector(255,255,255));
str_for_num(toWrite,mouse_pos.y);
draw_text(toWrite,20,300,vector(255,255,255));
if(isIntersecting)
draw_text("Intersect",20,200,vector(255,255,255));
else
draw_text("Don't intersect",20,200,vector(255,255,255));
vec_set(temp,vec2);vec_add(temp,center);
draw_line(temp,NULL,100);
draw_line(temp,vector(255,255,255),100);
vec_set(temp,vec3);vec_add(temp,center);
draw_line(temp,vector(255,255,255),100);
draw_circle(vec1,radius);
wait(1);
}
}
void setfirst()
{
vec2.x = mouse_pos.x - center.x;
vec2.y = mouse_pos.y - center.y;
}
void setsecond()
{
vec3.x = mouse_pos.x - center.x;
vec3.y = mouse_pos.y - center.y;
}
void main()
{
vec_set(vec1,vector(0,0,0));
vec_set(vec2,vector(0,0,0));
vec_set(vec3,vector(0,0,0));
vec_set(center,vector(screen_size.x/2,screen_size.y/2,0));
mouse_mode = 4;
on_mouse_left = setfirst;
on_mouse_right = setsecond;
draw_info();
while(1)
{
radius += mickey.z*time_step*5;
sphere.pos.x = vec1.x;sphere.pos.y = vec1.y;sphere.pos.z = vec1.z;
sphere.radius = radius;
line.from.x = vec2.x;line.from.y = vec2.y;line.from.z = vec2.z;
line.to.x = vec3.x;line.to.y = vec3.y;line.to.z = vec3.z;
isIntersecting = ll_vec3d_lineSphereIntersect(line, sphere);
wait(1);
}
}