Difference between revisions of "Math"
| m | |||
| Line 151: | Line 151: | ||
| === '''Gideros specific methods''' === | === '''Gideros specific methods''' === | ||
| − | [[math.length]] ''returns the length of a vector''<br/><!-- GIDEROSMTD:math.length(v) returns the length of a vector --> | + | [[math.length]] ''returns the length of a vector''<br/><!--GIDEROSMTD:math.length(v) returns the length of a vector--> | 
| − | [[math.cross]] ''returns the cross product of two vectors''<br/><!-- GIDEROSMTD:math.cross(v1,v2) returns the cross product of two vectors --> | + | [[math.cross]] ''returns the cross product of two vectors''<br/><!--GIDEROSMTD:math.cross(v1,v2) returns the cross product of two vectors--> | 
| − | [[math.dot]] ''returns the dot product of two vectors''<br/><!-- GIDEROSMTD:math.dot(v1,v2) returns the dot product of two vectors --> | + | [[math.dot]] ''returns the dot product of two vectors''<br/><!--GIDEROSMTD:math.dot(v1,v2) returns the dot product of two vectors--> | 
| − | [[math.distance]] ''returns the distance between two points''<br/><!-- GIDEROSMTD:math.distance(a,b) returns the distance between two points --> | + | [[math.distance]] ''returns the distance between two points''<br/><!--GIDEROSMTD:math.distance(a,b) returns the distance between two points--> | 
| − | [[math.distances]] ''returns the distances between a point and a set of points''<br/><!-- GIDEROSMTD:math.distances(point,point_list,order) returns the distances between a point and a set of points --> | + | [[math.distances]] ''returns the distances between a point and a set of points''<br/><!--GIDEROSMTD:math.distances(point,point_list,order) returns the distances between a point and a set of points--> | 
| − | [[math.nearest]] ''returns the nearest point from a list''<br/><!-- GIDEROSMTD:math.nearest(point,point_list) returns the nearest point from a list --> | + | [[math.nearest]] ''returns the nearest point from a list''<br/><!--GIDEROSMTD:math.nearest(point,point_list) returns the nearest point from a list--> | 
| − | [[math.normalize]] ''normalize a vector''<br/><!-- GIDEROSMTD:math.normalize(v) normalize a vector --> | + | [[math.normalize]] ''normalize a vector''<br/><!--GIDEROSMTD:math.normalize(v) normalize a vector--> | 
| − | [[math.raycast]] ''returns intersections between a ray and a set of shapes''<br/><!-- GIDEROSMTD:math.raycast(origin,direction,shape) returns intersections between a ray and a set of shapes --> | + | [[math.raycast]] ''returns intersections between a ray and a set of shapes''<br/><!--GIDEROSMTD:math.raycast(origin,direction,shape) returns intersections between a ray and a set of shapes--> | 
| − | [[math.inside]] ''returns wether a point is inside a shape''<br/><!-- GIDEROSMTD:math.inside(point,shape) returns wether a point is inside a shape --> | + | [[math.inside]] ''returns wether a point is inside a shape''<br/><!--GIDEROSMTD:math.inside(point,shape) returns wether a point is inside a shape--> | 
| − | [[math.edge]] ''returns the nearest point on the edge of a shape''<br/><!-- GIDEROSMTD:math.edge(point,shape) returns the nearest point on the edge of a shape --> | + | [[math.edge]] ''returns the nearest point on the edge of a shape''<br/><!--GIDEROSMTD:math.edge(point,shape) returns the nearest point on the edge of a shape--> | 
| === Events === | === Events === | ||
| === Constants === | === Constants === | ||
| − | [[huge]]<br/><!-- GIDEROSCST:huge 1.#INF--> | + | [[huge]] ''#INF''<br/><!--GIDEROSCST:huge 1.#INF--> | 
| − | [[pi]]<br/><!-- GIDEROSCST:pi 3.1415926535898--> | + | [[pi]] ''3.1415926535898''<br/><!--GIDEROSCST:pi 3.1415926535898--> | 
| |} | |} | ||
| {{GIDEROS IMPORTANT LINKS}} | {{GIDEROS IMPORTANT LINKS}} | ||
Revision as of 18:34, 22 January 2023
Supported platforms: 






Available since: Gideros 2011.6
Description
math table holds most commonly used math functions and constants.
Example
A nice example demonstrating various Gideros specific maths functions
local myappwidth = application:getContentWidth()
local myappheight = application:getContentHeight()
application:setBackgroundColor(0x555555)
local pixel = Pixel.new(0xffffff, 1, 16, 16)
pixel:setAnchorPoint(0.5, 0.5)
pixel:setPosition(7*myappwidth/10, 5*myappheight/10)
stage:addChild(pixel)
local raycast = Shape.new()
stage:addChild(raycast)
-- circle
local p=Particles.new()
stage:addChild(p)
local circlepts={}
circlepts[#circlepts+1] = { -- 1st circle
	x=128, y=128,
	size=128,
	color=0x0000ff,
	id=#circlepts+1,
	radius=128/2,
}
circlepts[#circlepts+1] = { -- 2nd circle
	x=128*3, y=128,
	size=128*1.5,
	color=0x0000aa,
	id=#circlepts+1,
	radius=128*1.5/2,
}
circlepts[#circlepts+1] = { -- 3rd circle
	x=128*2, y=128*3,
	size=64,
	color=0x000055,
	id=#circlepts+1,
	radius=64/2,
}
p:addParticles(circlepts)
-- markers
local pedge = p:addParticles{ {x=0, y=0, size=5, color=0x0} }[1]
local pray = p:addParticles{ {x=0, y=0, size=5, color=0xffffff, alpha=1} }[1]
local pray2 = p:addParticles{ {x=0, y=0, size=5, color=0xaaaaaa, alpha=1} }[1]
 
local shapeid
stage:addEventListener(Event.MOUSE_HOVER,function (e)
	local mouse={x=e.x, y=e.y}
	-- reset all circles original colors
	for i = 1, #circlepts do
		p:setParticleColor(i, circlepts[i].color, 1)
	end
	-- gets the mouse nearest circle id
	local nearestpoint, npdistance = math.nearest(mouse, circlepts)
	shapeid=nearestpoint.id
	-- highlights circle if mouse is close
	if npdistance < circlepts[shapeid].radius + 48 then
		p:setParticleColor(shapeid, 0xffff00, 1)
	end
	-- checks if mouse is inside circle
	local inside = math.inside(mouse, nearestpoint)
	if inside < 0 then
		p:setParticleColor(shapeid, 0x00ff00, 1)
	end
	-- edge
	local d = math.edge(mouse, nearestpoint)
	p:setParticlePosition(pedge, d.x, d.y)
	-- raycast
	local r = math.raycast( -- origin, direction, shape
		{x=mouse.x, y=mouse.y},
		math.normalize({x=mouse.x-pixel:getX(), y=mouse.y-pixel:getY()}),
		circlepts
	)
	if r[1] then
		p:setParticlePosition(pray, r[1].point.x, r[1].point.y)
		p:setParticleColor(pray, p:getParticleColor(pray), 1)
	else
		p:setParticleColor(pray, p:getParticleColor(pray), 0)
	end
	if r[2] then
		p:setParticlePosition(pray2, r[2].point.x, r[2].point.y)
		p:setParticleColor(pray2, p:getParticleColor(pray2), 1)
	else
		p:setParticleColor(pray2, p:getParticleColor(pray2), 0)
	end
	-- a line
	raycast:clear()
	raycast:setLineStyle(5, 0xffffff, 0.5)
	raycast:beginPath()
	raycast:moveTo(mouse.x, mouse.y)
	raycast:lineTo(pixel:getX(), pixel:getY())
	raycast:endPath()
end)
| Methodsmath.abs returns absolute value of v | Gideros specific methodsmath.length returns the length of a vector EventsConstants | 

