chromium / chromium / src / 23350bc8f4af14de77893e468dea3a8c710a4d8e / . / ash / laser / laser_segment_utils.h

// Copyright 2016 The Chromium Authors. All rights reserved. | |

// Use of this source code is governed by a BSD-style license that can be | |

// found in the LICENSE file. | |

#ifndef ASH_LASER_LASER_SEGMENT_UTILS_H_ | |

#define ASH_LASER_LASER_SEGMENT_UTILS_H_ | |

#include <vector> | |

#include "ash/ash_export.h" | |

namespace gfx { | |

class PointF; | |

class Vector2dF; | |

} | |

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_LASER_LASER_SEGMENT_UTILS_H_ |