34 markers_ = other.markers_;
41 for (
int i = 0; i < markers_.size(); ++i) {
42 if (markers_[i].clip == clip && markers_[i].frame == frame &&
43 markers_[i].track == track) {
44 *marker = markers_[i];
52 for (
int i = 0; i < markers_.size(); ++i) {
53 if (track == markers_[i].track) {
54 markers->push_back(markers_[i]);
61 vector<Marker>*
markers)
const {
62 for (
int i = 0; i < markers_.size(); ++i) {
63 if (clip == markers_[i].clip && track == markers_[i].track) {
64 markers->push_back(markers_[i]);
71 vector<Marker>*
markers)
const {
72 for (
int i = 0; i < markers_.size(); ++i) {
73 if (markers_[i].clip == clip && markers_[i].frame == frame) {
74 markers->push_back(markers_[i]);
83 vector<Marker>*
markers)
const {
84 std::vector<int> image1_tracks;
85 std::vector<int> image2_tracks;
88 for (
int i = 0; i < markers_.size(); ++i) {
89 int clip = markers_[i].clip;
90 int frame = markers_[i].frame;
91 if (clip == clip1 && frame == frame1) {
92 image1_tracks.push_back(markers_[i].track);
93 }
else if (clip == clip2 && frame == frame2) {
94 image2_tracks.push_back(markers_[i].track);
99 std::sort(image1_tracks.begin(), image1_tracks.end());
100 std::sort(image2_tracks.begin(), image2_tracks.end());
102 std::set_intersection(image1_tracks.begin(),
104 image2_tracks.begin(),
109 for (
int i = 0; i < markers_.size(); ++i) {
111 if (((markers_[i].clip == clip1 && markers_[i].frame == frame1) ||
112 (markers_[i].clip == clip2 && markers_[i].frame == frame2)) &&
115 markers->push_back(markers_[i]);
123 for (
int i = 0; i < markers_.size(); ++i) {
124 if (markers_[i].clip == marker.
clip && markers_[i].frame == marker.
frame &&
125 markers_[i].track == marker.
track) {
126 markers_[i] = marker;
130 markers_.push_back(marker);
138 int size = markers_.size();
139 for (
int i = 0; i < markers_.size(); ++i) {
140 if (markers_[i].clip == clip && markers_[i].frame == frame &&
141 markers_[i].track == track) {
142 markers_[i] = markers_[
size - 1];
143 markers_.resize(
size - 1);
152 for (
int i = 0; i < markers_.size(); ++i) {
153 if (markers_[i].track != track) {
154 markers_[
size++] = markers_[i];
157 markers_.resize(
size);
162 for (
int i = 0; i < markers_.size(); ++i) {
163 max_clip =
std::max(markers_[i].clip, max_clip);
170 for (
int i = 0; i < markers_.size(); ++i) {
171 if (markers_[i].clip == clip) {
172 max_frame =
std::max(markers_[i].frame, max_frame);
180 for (
int i = 0; i < markers_.size(); ++i) {
181 max_track =
std::max(markers_[i].track, max_track);
187 return markers_.size();
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void sort(btMatrix3x3 &U, btVector3 &sigma, btMatrix3x3 &V, int t)
Helper function of 3X3 SVD for sorting singular values.
void AddMarker(const Marker &marker)
bool RemoveMarker(int clip, int frame, int track)
void RemoveMarkersForTrack(int track)
void GetMarkersInFrame(int clip, int frame, vector< Marker > *markers) const
void SetMarkers(vector< Marker > *markers)
int MaxFrame(int clip) const
void GetMarkersForTracksInBothImages(int clip1, int frame1, int clip2, int frame2, vector< Marker > *markers) const
void GetMarkersForTrackInClip(int clip, int track, vector< Marker > *markers) const
void GetMarkersForTrack(int track, vector< Marker > *markers) const
const vector< Marker > & markers() const
bool GetMarker(int clip, int frame, int track, Marker *marker) const
const vector< Marker > & markers
Intersection< segment > intersection