File: laser_segment_utils.h

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (55 lines) | stat: -rw-r--r-- 2,639 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_FAST_INK_LASER_LASER_SEGMENT_UTILS_H_
#define ASH_FAST_INK_LASER_LASER_SEGMENT_UTILS_H_

#include "ash/ash_export.h"

namespace gfx {
class PointF;
class Vector2dF;
}  // namespace gfx

namespace ash {

// Compute the angle in radians of |point|, with |origin| as the origin and
// |direction| as the x-axis. In other words, computes the angle in radians
// between |direction| and |point| - |origin|.
float ASH_EXPORT AngleOfPointInNewCoordinates(const gfx::PointF& origin,
                                              const gfx::Vector2dF& direction,
                                              const gfx::PointF& point);

// Compute the variables for the equation of the lines normal to the line
// segment formed by |start_point| and |end_point|, and which run through the
// endpoints of that line segment. The outputs will be returned as NaN if the
// line segment is parallel to the x-axis (undefined normal lines).
void ASH_EXPORT ComputeNormalLineVariables(const gfx::PointF& start_point,
                                           const gfx::PointF& end_point,
                                           float* normal_slope,
                                           float* start_y_intercept,
                                           float* end_y_intercept);

// Compute the two the projections of |point| along the line defined by
// |line_slope| and |line_y_intercept|. The distance of each projection is
// |projection_distance| from |point|.
void ASH_EXPORT ComputeProjectedPoints(const gfx::PointF& point,
                                       float line_slope,
                                       float line_y_intercept,
                                       float projection_distance,
                                       gfx::PointF* first_projection,
                                       gfx::PointF* second_projection);

// Checks if the angle of |first_point| is smaller than the angle of
// |second_point|. These angles are computed relative to the coordinate system
// defined by the midpoint of |start_point| and |end_point|, with the x-axis
// as |end_point| - |start_point|.
bool ASH_EXPORT IsFirstPointSmallerAngle(const gfx::PointF& start_point,
                                         const gfx::PointF& end_point,
                                         const gfx::PointF& first_point,
                                         const gfx::PointF& second_point);

}  // namespace ash

#endif  // ASH_FAST_INK_LASER_LASER_SEGMENT_UTILS_H_