A method, comprising: receiving depth data about an environment at a computing device (220, 320a,320b); generating a point cloud (420, 440a, 440b, 440c, 520a, 520b, 620, 622, 624, 626, 628) from the depth data using the computing device; determining a haptic interface point (314, 410a, 410b, 410c, 510b, 610, 612, 614, 616, 618) using the computing device; determining a force vector (F 1) between the HIP and the point cloud using the computing device by at least determining the force vector between the HIP and the point cloud using a proxy (402, 402a, 402b, 402c, 436a, 436b, 436c, 530a, 530b, 630, 632, 634, 636, 638) wherein the proxy is configured to select zero or more points of the point cloud near the proxy, wherein the proxy comprises a reference point for the proxy, at least three scale factors, and a movement state, wherein the reference point for the proxy is a center of the proxy (438a, 438b, 438c, 534a, 534b), and wherein the at least three scale factors comprise three radii r1, r2, and r3 with r1 < r2 ≤ r3; sending, from the computing device, a indication of haptic feedback based on the force vector; characterized in that determining the force vector between the HIP and the point cloud using the proxy comprises determining the force vector between the HIP and the point cloud based on the movement state by at least: determining a closest point within the point cloud to the center of the proxy, and a closest distance between the closest point and the center of the proxy; and selecting one or more movement states based on at least one comparison between the closest distance and at least one radius of the three radii comprising: in response to determining that the closest distance is less than radius r1, determining that the movement state is an entrenched state; in response to determining that the closest distance is greater than radius r1 but less than radius r2, determining that the movement state is an in-contact state; and in response to determining that the closest distance is greater than radius r2, determining that the movement state is a free-motion state. receiving depth data about an environment at a computing device (220, 320a,320b); generating a point cloud (420, 440a, 440b, 440c, 520a, 520b, 620, 622, 624, 626, 628) from the depth data using the computing device; determining a haptic interface point (314, 410a, 410b, 410c, 510b, 610, 612, 614, 616, 618) using the computing device; determining a force vector (F 1) between the HIP and the point cloud using the computing device by at least determining the force vector between the HIP and the point cloud using a proxy (402, 402a, 402b, 402c, 436a, 436b, 436c, 530a, 530b, 630, 632, 634, 636, 638) wherein the proxy is configured to select zero or more points of the point cloud near the proxy, wherein the proxy comprises a reference point for the proxy, at least three scale factors, and a movement state, wherein the reference point for the proxy is a center of the proxy (438a, 438b, 438c, 534a, 534b), and wherein the at least three scale factors comprise three radii r1, r2, and r3 with r1 < r2 ≤ r3; sending, from the computing device, a indication of haptic feedback based on the force vector; characterized in that determining the force vector between the HIP and the point cloud using the proxy comprises determining the force vector between the HIP and the point cloud based on the movement state by at least: determining a closest point within the point cloud to the center of the proxy, and a closest distance between the closest point and the center of the proxy; and selecting one or more movement states based on at least one comparison between the closest distance and at least one radius of the three radii comprising: in response to determining that the closest distance is less than radius r1, determining that the movement state is an entrenched state; in response to determining that the closest distance is greater than radius r1 but less than radius r2, determining that the movement state is an in-contact state; and determining a closest point within the point cloud to the center of the proxy, and a closest distance between the closest point and the center of the proxy; and selecting one or more movement states based on at least one comparison between the closest distance and at least one radius of the three radii comprising: in response to determining that the closest distance is less than radius r1, determining that the movement state is an entrenched state; in response to determining that the closest distance is greater than radius r1 but less than radius r2, determining that the movement state is an in-contact state; and in response to determining that the closest distance is less than radius r1, determining that the movement state is an entrenched state; in response to determining that the closest distance is greater than radius r1 but less than radius r2, determining that the movement state is an in-contact state; and in response to determining that the closest distance is greater than radius r2, determining that the movement state is a free-motion state.