Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Daniel ANTELME
digilib-pivaj
Commits
58171744
Commit
58171744
authored
Feb 21, 2015
by
hertzhaft
Browse files
use proper line geometry
parent
aa4f020d
Changes
2
Hide whitespace changes
Inline
Side-by-side
webapp/src/main/webapp/jquery/jquery.digilib.geometry.js
View file @
58171744
...
...
@@ -121,8 +121,13 @@
};
// add position other to this
that
.
add
=
function
(
other
)
{
this
.
x
+=
other
.
x
;
this
.
y
+=
other
.
y
;
if
(
$
.
isArray
(
other
))
{
this
.
x
+=
other
[
0
];
this
.
y
+=
other
[
1
];
}
else
{
this
.
x
+=
other
.
x
;
this
.
y
+=
other
.
y
;
}
return
this
;
};
// returns negative position
...
...
@@ -195,6 +200,70 @@
};
return
that
;
};
/*
* Line class (for on-screen geometry)
*/
var
line
=
function
(
p
,
q
)
{
var
that
=
{
// definition point
x
:
p
.
x
,
y
:
p
.
y
};
if
(
q
.
x
!=
null
)
{
that
.
dx
=
q
.
x
-
that
.
x
;
that
.
dy
=
q
.
y
-
that
.
y
;
}
else
if
(
$
.
isArray
(
q
))
{
that
.
dx
=
q
[
0
]
+
0
;
that
.
dy
=
q
[
1
]
+
0
;
}
else
if
(
q
===
0
)
{
that
.
dx
=
0
;
that
.
dy
=
1
;
}
else
if
(
q
===
Infinity
)
{
that
.
dx
=
1
;
that
.
dy
=
0
;
}
else
if
(
q
===
-
Infinity
)
{
that
.
dx
=
-
1
;
that
.
dy
=
0
;
}
else
if
(
typeof
q
===
'
number
'
&&
isFinite
(
q
))
{
that
.
dx
=
1
;
that
.
dy
=
1
/
q
;
}
else
{
that
.
dx
=
1
;
that
.
dy
=
1
;
}
that
.
ratio
=
that
.
dx
/
that
.
dy
;
// slope
// return a copy
that
.
copy
=
function
()
{
return
line
(
position
(
this
.
x
,
this
.
y
),
this
.
ratio
);
};
// return orthogonal line
that
.
orthogonal
=
function
()
{
return
(
this
.
ratio
===
Infinity
||
this
.
ratio
===
-
Infinity
)
?
line
(
position
(
this
.
x
,
this
.
y
),
0
)
:
line
(
position
(
this
.
x
,
this
.
y
),
[
-
this
.
dy
,
this
.
dx
]);
};
// return a point (position) by adding a vector to the definition point
that
.
add
=
function
(
q
)
{
return
$
.
isArray
(
q
)
?
position
(
this
.
x
+
q
[
0
],
this
.
y
+
q
[
1
])
:
position
(
this
.
x
+
q
.
x
,
this
.
y
+
q
.
y
);
};
// point on line
that
.
point
=
function
(
factor
)
{
return
position
(
this
.
x
+
factor
*
this
.
dx
,
this
.
y
+
factor
*
this
.
dy
)
};
// intersection point with other line
that
.
intersection
=
function
(
other
)
{
var
det
=
this
.
dy
*
other
.
dx
-
this
.
dx
*
other
.
dy
if
(
det
===
0
)
{
// parallel
return
null
;
}
var
c
=
this
.
dx
*
(
other
.
y
-
this
.
y
)
+
this
.
dy
*
(
this
.
x
-
other
.
x
);
return
other
.
point
(
c
/
det
);
};
return
that
;
};
/*
* Rectangle class
*/
...
...
@@ -588,6 +657,7 @@
var
geometry
=
{
size
:
size
,
position
:
position
,
line
:
line
,
rectangle
:
rectangle
,
transform
:
transform
};
...
...
webapp/src/main/webapp/jquery/jquery.digilib.measure.js
View file @
58171744
...
...
@@ -1177,7 +1177,6 @@
console
.
error
(
"
No SVG factory found: jquery.digilib.vector not loaded?
"
);
return
;
}
var
trafo
=
data
.
imgTrafo
;
factory
[
'
Proportion
'
]
=
function
(
shape
)
{
var
$s
=
factory
[
'
LineString
'
](
shape
);
shape
.
properties
.
maxvtx
=
3
;
...
...
@@ -1185,24 +1184,22 @@
};
factory
[
'
Rect
'
]
=
function
(
shape
)
{
var
$s
=
factory
[
'
Polygon
'
](
shape
);
var
trafo
=
data
.
imgTrafo
;
var
props
=
shape
.
properties
;
props
.
maxvtx
=
3
;
$s
.
place
=
function
()
{
var
p
=
props
.
screenpos
;
var
g
=
shape
.
geometry
;
var
vtx
=
props
.
vtx
;
if
(
vtx
>
1
||
p
.
length
>
2
)
{
var
dx
=
p
[
2
].
x
-
p
[
1
].
x
;
var
dy
=
p
[
1
].
y
-
p
[
2
].
y
var
d
=
p
[
0
].
delta
(
p
[
1
]);
var
ratio
=
d
.
x
/
d
.
y
;
var
inv
=
d
.
y
/
d
.
x
;
var
z
=
Math
.
abs
(
d
.
y
)
>
Math
.
abs
(
d
.
x
)
?
geom
.
position
(
dx
,
ratio
*
-
dx
)
:
geom
.
position
(
inv
*
dy
,
-
dy
);
p
[
2
]
=
p
[
1
].
copy
().
add
(
z
);
p
[
3
]
=
p
[
0
].
copy
().
add
(
z
);
shape
.
geometry
.
coordinates
[
2
]
=
data
.
imgTrafo
.
invtransform
(
p
[
2
]).
toArray
();
shape
.
geometry
.
coordinates
[
3
]
=
data
.
imgTrafo
.
invtransform
(
p
[
3
]).
toArray
();
var
d
=
p
[
0
].
delta
(
p
[
1
]).
toArray
();
var
line1
=
geom
.
line
(
p
[
0
],
d
);
var
line2
=
geom
.
line
(
p
[
2
],
d
);
// parallel (same slope)
var
orth
=
line1
.
orthogonal
();
p
[
3
]
=
orth
.
intersection
(
line2
);
p
[
2
]
=
p
[
3
].
copy
().
add
(
d
);
g
.
coordinates
[
2
]
=
trafo
.
invtransform
(
p
[
2
]).
toArray
();
g
.
coordinates
[
3
]
=
trafo
.
invtransform
(
p
[
3
]).
toArray
();
}
this
.
attr
({
'
points
'
:
p
.
join
(
"
"
)});
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment