Garry's Mod Wiki

Revision Difference

math.BSplinePoint#511587

<function name="BSplinePoint" parent="math" type="libraryfunc">⤶ <description>Basic code for algorithm.</description>⤶ <realm>Shared and Menu</realm>⤶ <file line="138-L154">lua/includes/extensions/math.lua</file>⤶ <args>⤶ <arg name="tDiff" type="number">From 0 to 1, where alongside the spline the point will be.</arg>⤶ <arg name="tPoints" type="table">A table of &lt;page&gt;Vector&lt;/page&gt;s. The amount cannot be less than 4.</arg>⤶ <arg name="tMax" type="number">Just leave this at 1.</arg>⤶ </args>⤶ <rets>⤶ <ret name="" type="Vector">Point on Bezier curve, related to tDiff.</ret>⤶ </rets>⤶ </function>⤶ ⤶ <example>⤶ <description>Example usage of the function, makes a black box moving along the beizer curve made out of 4 points</description>⤶ <code>⤶ local points = { Vector( 100, 100, 0 ), Vector( 200, 200, 0 ), Vector( 300, 100, 0 ), Vector( 400, 200, 0 ) }⤶ hook.Add( "HUDPaint", "BSplinePointExample", function()⤶ -- Draw the points⤶ for id, p in pairs( points ) do⤶ draw.RoundedBox( 0, p.x - 2, p.y - 2, 4, 4, color_white )⤶ end⤶ ⤶ -- Draw the spline⤶ local pos = math.BSplinePoint( ( math.cos( CurTime() ) + 1 ) / 2, points, 1 )⤶ draw.RoundedBox( 0, pos.x - 2, pos.y - 2, 4, 4, Color( 0, 0, 0 ) )⤶ end )⤶ </code>⤶ ⤶ </example>