5
5
<refentry id="libgimpmath-GimpVector">
7
<refentrytitle role="top_of_page">GimpVector</refentrytitle>
7
<refentrytitle role="top_of_page" id="libgimpmath-GimpVector.top_of_page">GimpVector</refentrytitle>
8
8
<manvolnum>3</manvolnum>
9
9
<refmiscinfo>LIBGIMPMATH Library</refmiscinfo>
15
15
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
18
<refsynopsisdiv role="synopsis">
18
<refsynopsisdiv id="libgimpmath-GimpVector.synopsis" role="synopsis">
19
19
<title role="synopsis.title">Synopsis</title>
25
22
<link linkend="GimpVector2">GimpVector2</link>;
26
23
<link linkend="GimpVector3">GimpVector3</link>;
27
24
<link linkend="GimpVector4">GimpVector4</link>;
151
<refsect1 role="details">
148
<refsect1 id="libgimpmath-GimpVector.details" role="details">
152
149
<title role="details.title">Details</title>
154
<title><anchor id="GimpVector2" role="struct"/>GimpVector2</title>
155
<indexterm><primary>GimpVector2</primary></indexterm><programlisting>typedef struct {
150
<refsect2 id="GimpVector2" role="struct">
151
<title>GimpVector2</title>
152
<indexterm zone="GimpVector2"><primary>GimpVector2</primary></indexterm><programlisting>typedef struct {
158
155
</programlisting>
160
157
A two dimensional vector.
161
158
</para></refsect2>
163
<title><anchor id="GimpVector3" role="struct"/>GimpVector3</title>
164
<indexterm><primary>GimpVector3</primary></indexterm><programlisting>typedef struct {
159
<refsect2 id="GimpVector3" role="struct">
160
<title>GimpVector3</title>
161
<indexterm zone="GimpVector3"><primary>GimpVector3</primary></indexterm><programlisting>typedef struct {
167
164
</programlisting>
169
166
A three dimensional vector.
170
167
</para></refsect2>
172
<title><anchor id="GimpVector4" role="struct"/>GimpVector4</title>
173
<indexterm><primary>GimpVector4</primary></indexterm><programlisting>typedef struct {
168
<refsect2 id="GimpVector4" role="struct">
169
<title>GimpVector4</title>
170
<indexterm zone="GimpVector4"><primary>GimpVector4</primary></indexterm><programlisting>typedef struct {
174
171
gdouble x, y, z, w;
176
173
</programlisting>
178
175
A four dimensional vector.
179
176
</para></refsect2>
181
<title><anchor id="gimp-vector2-new" role="function"/>gimp_vector2_new ()</title>
182
<indexterm><primary>gimp_vector2_new</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_new (<link linkend="gdouble">gdouble</link> x,
177
<refsect2 id="gimp-vector2-new" role="function">
178
<title>gimp_vector2_new ()</title>
179
<indexterm zone="gimp-vector2-new"><primary>gimp_vector2_new</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_new (<link linkend="gdouble">gdouble</link> x,
183
180
<link linkend="gdouble">gdouble</link> y);</programlisting>
185
182
Creates a <link linkend="GimpVector2"><type>GimpVector2</type></link> of coordinates <parameter>x</parameter> and <parameter>y</parameter>.</para>
195
192
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the resulting <link linkend="GimpVector2"><type>GimpVector2</type></link>.
196
193
</simpara></listitem></varlistentry>
197
194
</variablelist></refsect2>
199
<title><anchor id="gimp-vector2-set" role="function"/>gimp_vector2_set ()</title>
200
<indexterm><primary>gimp_vector2_set</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_set (<link linkend="GimpVector2">GimpVector2</link> *vector,
195
<refsect2 id="gimp-vector2-set" role="function">
196
<title>gimp_vector2_set ()</title>
197
<indexterm zone="gimp-vector2-set"><primary>gimp_vector2_set</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_set (<link linkend="GimpVector2">GimpVector2</link> *vector,
201
198
<link linkend="gdouble">gdouble</link> x,
202
199
<link linkend="gdouble">gdouble</link> y);</programlisting>
215
212
<listitem><simpara> the Y coordinate.
216
213
</simpara></listitem></varlistentry>
217
214
</variablelist></refsect2>
219
<title><anchor id="gimp-vector2-length" role="function"/>gimp_vector2_length ()</title>
220
<indexterm><primary>gimp_vector2_length</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector2_length (const <link linkend="GimpVector2">GimpVector2</link> *vector);</programlisting>
215
<refsect2 id="gimp-vector2-length" role="function">
216
<title>gimp_vector2_length ()</title>
217
<indexterm zone="gimp-vector2-length"><primary>gimp_vector2_length</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector2_length (const <link linkend="GimpVector2">GimpVector2</link> *vector);</programlisting>
222
219
Computes the length of a 2D vector.</para>
229
226
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the length of <parameter>vector</parameter> (a positive gdouble).
230
227
</simpara></listitem></varlistentry>
231
228
</variablelist></refsect2>
233
<title><anchor id="gimp-vector2-length-val" role="function"/>gimp_vector2_length_val ()</title>
234
<indexterm><primary>gimp_vector2_length_val</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector2_length_val (<link linkend="GimpVector2">GimpVector2</link> vector);</programlisting>
229
<refsect2 id="gimp-vector2-length-val" role="function">
230
<title>gimp_vector2_length_val ()</title>
231
<indexterm zone="gimp-vector2-length-val"><primary>gimp_vector2_length_val</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector2_length_val (<link linkend="GimpVector2">GimpVector2</link> vector);</programlisting>
236
233
This function is identical to <link linkend="gimp-vector2-length"><function>gimp_vector2_length()</function></link> but the
237
234
vector is passed by value rather than by reference.</para>
244
241
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the length of <parameter>vector</parameter> (a positive gdouble).
245
242
</simpara></listitem></varlistentry>
246
243
</variablelist></refsect2>
248
<title><anchor id="gimp-vector2-mul" role="function"/>gimp_vector2_mul ()</title>
249
<indexterm><primary>gimp_vector2_mul</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_mul (<link linkend="GimpVector2">GimpVector2</link> *vector,
244
<refsect2 id="gimp-vector2-mul" role="function">
245
<title>gimp_vector2_mul ()</title>
246
<indexterm zone="gimp-vector2-mul"><primary>gimp_vector2_mul</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_mul (<link linkend="GimpVector2">GimpVector2</link> *vector,
250
247
<link linkend="gdouble">gdouble</link> factor);</programlisting>
252
249
Multiplies each component of the <parameter>vector</parameter> by <parameter>factor</parameter>. Note that this
261
258
<listitem><simpara> a scalar.
262
259
</simpara></listitem></varlistentry>
263
260
</variablelist></refsect2>
265
<title><anchor id="gimp-vector2-mul-val" role="function"/>gimp_vector2_mul_val ()</title>
266
<indexterm><primary>gimp_vector2_mul_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_mul_val (<link linkend="GimpVector2">GimpVector2</link> vector,
261
<refsect2 id="gimp-vector2-mul-val" role="function">
262
<title>gimp_vector2_mul_val ()</title>
263
<indexterm zone="gimp-vector2-mul-val"><primary>gimp_vector2_mul_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_mul_val (<link linkend="GimpVector2">GimpVector2</link> vector,
267
264
<link linkend="gdouble">gdouble</link> factor);</programlisting>
269
266
This function is identical to <link linkend="gimp-vector2-mul"><function>gimp_vector2_mul()</function></link> but the vector is
280
277
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the resulting <link linkend="GimpVector2"><type>GimpVector2</type></link>.
281
278
</simpara></listitem></varlistentry>
282
279
</variablelist></refsect2>
284
<title><anchor id="gimp-vector2-normalize" role="function"/>gimp_vector2_normalize ()</title>
285
<indexterm><primary>gimp_vector2_normalize</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_normalize (<link linkend="GimpVector2">GimpVector2</link> *vector);</programlisting>
280
<refsect2 id="gimp-vector2-normalize" role="function">
281
<title>gimp_vector2_normalize ()</title>
282
<indexterm zone="gimp-vector2-normalize"><primary>gimp_vector2_normalize</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_normalize (<link linkend="GimpVector2">GimpVector2</link> *vector);</programlisting>
287
284
Normalizes the <parameter>vector</parameter> so the length of the <parameter>vector</parameter> is 1.0. The nul
288
285
vector will not be changed.</para>
293
290
<listitem><simpara> a pointer to a <link linkend="GimpVector2"><type>GimpVector2</type></link>.
294
291
</simpara></listitem></varlistentry>
295
292
</variablelist></refsect2>
297
<title><anchor id="gimp-vector2-normalize-val" role="function"/>gimp_vector2_normalize_val ()</title>
298
<indexterm><primary>gimp_vector2_normalize_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_normalize_val (<link linkend="GimpVector2">GimpVector2</link> vector);</programlisting>
293
<refsect2 id="gimp-vector2-normalize-val" role="function">
294
<title>gimp_vector2_normalize_val ()</title>
295
<indexterm zone="gimp-vector2-normalize-val"><primary>gimp_vector2_normalize_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_normalize_val (<link linkend="GimpVector2">GimpVector2</link> vector);</programlisting>
300
297
This function is identical to <link linkend="gimp-vector2-normalize"><function>gimp_vector2_normalize()</function></link> but the
301
298
vector is passed by value rather than by reference.</para>
309
306
direction but with a length of 1.0.
310
307
</simpara></listitem></varlistentry>
311
308
</variablelist></refsect2>
313
<title><anchor id="gimp-vector2-neg" role="function"/>gimp_vector2_neg ()</title>
314
<indexterm><primary>gimp_vector2_neg</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_neg (<link linkend="GimpVector2">GimpVector2</link> *vector);</programlisting>
309
<refsect2 id="gimp-vector2-neg" role="function">
310
<title>gimp_vector2_neg ()</title>
311
<indexterm zone="gimp-vector2-neg"><primary>gimp_vector2_neg</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_neg (<link linkend="GimpVector2">GimpVector2</link> *vector);</programlisting>
316
313
Negates the <parameter>vector</parameter> (i.e. negate all its coordinates).</para>
321
318
<listitem><simpara> a pointer to a <link linkend="GimpVector2"><type>GimpVector2</type></link>.
322
319
</simpara></listitem></varlistentry>
323
320
</variablelist></refsect2>
325
<title><anchor id="gimp-vector2-neg-val" role="function"/>gimp_vector2_neg_val ()</title>
326
<indexterm><primary>gimp_vector2_neg_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_neg_val (<link linkend="GimpVector2">GimpVector2</link> vector);</programlisting>
321
<refsect2 id="gimp-vector2-neg-val" role="function">
322
<title>gimp_vector2_neg_val ()</title>
323
<indexterm zone="gimp-vector2-neg-val"><primary>gimp_vector2_neg_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_neg_val (<link linkend="GimpVector2">GimpVector2</link> vector);</programlisting>
328
325
This function is identical to <link linkend="gimp-vector2-neg"><function>gimp_vector2_neg()</function></link> but the vector
329
326
is passed by value rather than by reference.</para>
336
333
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the negated <link linkend="GimpVector2"><type>GimpVector2</type></link>.
337
334
</simpara></listitem></varlistentry>
338
335
</variablelist></refsect2>
340
<title><anchor id="gimp-vector2-add" role="function"/>gimp_vector2_add ()</title>
341
<indexterm><primary>gimp_vector2_add</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_add (<link linkend="GimpVector2">GimpVector2</link> *result,
336
<refsect2 id="gimp-vector2-add" role="function">
337
<title>gimp_vector2_add ()</title>
338
<indexterm zone="gimp-vector2-add"><primary>gimp_vector2_add</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_add (<link linkend="GimpVector2">GimpVector2</link> *result,
342
339
const <link linkend="GimpVector2">GimpVector2</link> *vector1,
343
340
const <link linkend="GimpVector2">GimpVector2</link> *vector2);</programlisting>
357
354
<listitem><simpara> a pointer to the second <link linkend="GimpVector2"><type>GimpVector2</type></link>.
358
355
</simpara></listitem></varlistentry>
359
356
</variablelist></refsect2>
361
<title><anchor id="gimp-vector2-add-val" role="function"/>gimp_vector2_add_val ()</title>
362
<indexterm><primary>gimp_vector2_add_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_add_val (<link linkend="GimpVector2">GimpVector2</link> vector1,
357
<refsect2 id="gimp-vector2-add-val" role="function">
358
<title>gimp_vector2_add_val ()</title>
359
<indexterm zone="gimp-vector2-add-val"><primary>gimp_vector2_add_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_add_val (<link linkend="GimpVector2">GimpVector2</link> vector1,
363
360
<link linkend="GimpVector2">GimpVector2</link> vector2);</programlisting>
365
362
This function is identical to <link linkend="gimp-vector2-add"><function>gimp_vector2_add()</function></link> but the vectors
376
373
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the resulting <link linkend="GimpVector2"><type>GimpVector2</type></link>.
377
374
</simpara></listitem></varlistentry>
378
375
</variablelist></refsect2>
380
<title><anchor id="gimp-vector2-sub" role="function"/>gimp_vector2_sub ()</title>
381
<indexterm><primary>gimp_vector2_sub</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_sub (<link linkend="GimpVector2">GimpVector2</link> *result,
376
<refsect2 id="gimp-vector2-sub" role="function">
377
<title>gimp_vector2_sub ()</title>
378
<indexterm zone="gimp-vector2-sub"><primary>gimp_vector2_sub</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_sub (<link linkend="GimpVector2">GimpVector2</link> *result,
382
379
const <link linkend="GimpVector2">GimpVector2</link> *vector1,
383
380
const <link linkend="GimpVector2">GimpVector2</link> *vector2);</programlisting>
397
394
<listitem><simpara> a pointer to the second <link linkend="GimpVector2"><type>GimpVector2</type></link>.
398
395
</simpara></listitem></varlistentry>
399
396
</variablelist></refsect2>
401
<title><anchor id="gimp-vector2-sub-val" role="function"/>gimp_vector2_sub_val ()</title>
402
<indexterm><primary>gimp_vector2_sub_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_sub_val (<link linkend="GimpVector2">GimpVector2</link> vector1,
397
<refsect2 id="gimp-vector2-sub-val" role="function">
398
<title>gimp_vector2_sub_val ()</title>
399
<indexterm zone="gimp-vector2-sub-val"><primary>gimp_vector2_sub_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_sub_val (<link linkend="GimpVector2">GimpVector2</link> vector1,
403
400
<link linkend="GimpVector2">GimpVector2</link> vector2);</programlisting>
405
402
This function is identical to <link linkend="gimp-vector2-sub"><function>gimp_vector2_sub()</function></link> but the vectors
416
413
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the resulting <link linkend="GimpVector2"><type>GimpVector2</type></link>.
417
414
</simpara></listitem></varlistentry>
418
415
</variablelist></refsect2>
420
<title><anchor id="gimp-vector2-inner-product" role="function"/>gimp_vector2_inner_product ()</title>
421
<indexterm><primary>gimp_vector2_inner_product</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector2_inner_product (const <link linkend="GimpVector2">GimpVector2</link> *vector1,
416
<refsect2 id="gimp-vector2-inner-product" role="function">
417
<title>gimp_vector2_inner_product ()</title>
418
<indexterm zone="gimp-vector2-inner-product"><primary>gimp_vector2_inner_product</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector2_inner_product (const <link linkend="GimpVector2">GimpVector2</link> *vector1,
422
419
const <link linkend="GimpVector2">GimpVector2</link> *vector2);</programlisting>
424
421
Computes the inner (dot) product of two 2D vectors.
435
432
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The inner product.
436
433
</simpara></listitem></varlistentry>
437
434
</variablelist></refsect2>
439
<title><anchor id="gimp-vector2-inner-product-val" role="function"/>gimp_vector2_inner_product_val ()</title>
440
<indexterm><primary>gimp_vector2_inner_product_val</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector2_inner_product_val (<link linkend="GimpVector2">GimpVector2</link> vector1,
435
<refsect2 id="gimp-vector2-inner-product-val" role="function">
436
<title>gimp_vector2_inner_product_val ()</title>
437
<indexterm zone="gimp-vector2-inner-product-val"><primary>gimp_vector2_inner_product_val</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector2_inner_product_val (<link linkend="GimpVector2">GimpVector2</link> vector1,
441
438
<link linkend="GimpVector2">GimpVector2</link> vector2);</programlisting>
443
440
This function is identical to <link linkend="gimp-vector2-inner-product"><function>gimp_vector2_inner_product()</function></link> but the
454
451
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The inner product.
455
452
</simpara></listitem></varlistentry>
456
453
</variablelist></refsect2>
458
<title><anchor id="gimp-vector2-cross-product" role="function"/>gimp_vector2_cross_product ()</title>
459
<indexterm><primary>gimp_vector2_cross_product</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_cross_product (const <link linkend="GimpVector2">GimpVector2</link> *vector1,
454
<refsect2 id="gimp-vector2-cross-product" role="function">
455
<title>gimp_vector2_cross_product ()</title>
456
<indexterm zone="gimp-vector2-cross-product"><primary>gimp_vector2_cross_product</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_cross_product (const <link linkend="GimpVector2">GimpVector2</link> *vector1,
460
457
const <link linkend="GimpVector2">GimpVector2</link> *vector2);</programlisting>
462
459
Compute the cross product of two vectors. The result is a
479
476
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The cross product.
480
477
</simpara></listitem></varlistentry>
481
478
</variablelist></refsect2>
483
<title><anchor id="gimp-vector2-cross-product-val" role="function"/>gimp_vector2_cross_product_val ()</title>
484
<indexterm><primary>gimp_vector2_cross_product_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_cross_product_val (<link linkend="GimpVector2">GimpVector2</link> vector1,
479
<refsect2 id="gimp-vector2-cross-product-val" role="function">
480
<title>gimp_vector2_cross_product_val ()</title>
481
<indexterm zone="gimp-vector2-cross-product-val"><primary>gimp_vector2_cross_product_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_cross_product_val (<link linkend="GimpVector2">GimpVector2</link> vector1,
485
482
<link linkend="GimpVector2">GimpVector2</link> vector2);</programlisting>
487
484
This function is identical to <link linkend="gimp-vector2-cross-product"><function>gimp_vector2_cross_product()</function></link> but the
498
495
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The cross product.
499
496
</simpara></listitem></varlistentry>
500
497
</variablelist></refsect2>
502
<title><anchor id="gimp-vector2-rotate" role="function"/>gimp_vector2_rotate ()</title>
503
<indexterm><primary>gimp_vector2_rotate</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_rotate (<link linkend="GimpVector2">GimpVector2</link> *vector,
498
<refsect2 id="gimp-vector2-rotate" role="function">
499
<title>gimp_vector2_rotate ()</title>
500
<indexterm zone="gimp-vector2-rotate"><primary>gimp_vector2_rotate</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector2_rotate (<link linkend="GimpVector2">GimpVector2</link> *vector,
504
501
<link linkend="gdouble">gdouble</link> alpha);</programlisting>
506
503
Rotates the <parameter>vector</parameter> counterclockwise by <parameter>alpha</parameter> radians.</para>
514
511
<listitem><simpara> an angle (in radians).
515
512
</simpara></listitem></varlistentry>
516
513
</variablelist></refsect2>
518
<title><anchor id="gimp-vector2-rotate-val" role="function"/>gimp_vector2_rotate_val ()</title>
519
<indexterm><primary>gimp_vector2_rotate_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_rotate_val (<link linkend="GimpVector2">GimpVector2</link> vector,
514
<refsect2 id="gimp-vector2-rotate-val" role="function">
515
<title>gimp_vector2_rotate_val ()</title>
516
<indexterm zone="gimp-vector2-rotate-val"><primary>gimp_vector2_rotate_val</primary></indexterm><programlisting><link linkend="GimpVector2">GimpVector2</link> gimp_vector2_rotate_val (<link linkend="GimpVector2">GimpVector2</link> vector,
520
517
<link linkend="gdouble">gdouble</link> alpha);</programlisting>
522
519
This function is identical to <link linkend="gimp-vector2-rotate"><function>gimp_vector2_rotate()</function></link> but the vector
535
532
</simpara></listitem></varlistentry>
536
533
</variablelist></refsect2>
538
<title><anchor id="gimp-vector3-new" role="function"/>gimp_vector3_new ()</title>
539
<indexterm><primary>gimp_vector3_new</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_new (<link linkend="gdouble">gdouble</link> x,
534
<refsect2 id="gimp-vector3-new" role="function">
535
<title>gimp_vector3_new ()</title>
536
<indexterm zone="gimp-vector3-new"><primary>gimp_vector3_new</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_new (<link linkend="gdouble">gdouble</link> x,
540
537
<link linkend="gdouble">gdouble</link> y,
541
538
<link linkend="gdouble">gdouble</link> z);</programlisting>
556
553
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the resulting <link linkend="GimpVector3"><type>GimpVector3</type></link>.
557
554
</simpara></listitem></varlistentry>
558
555
</variablelist></refsect2>
560
<title><anchor id="gimp-vector3-set" role="function"/>gimp_vector3_set ()</title>
561
<indexterm><primary>gimp_vector3_set</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_set (<link linkend="GimpVector3">GimpVector3</link> *vector,
556
<refsect2 id="gimp-vector3-set" role="function">
557
<title>gimp_vector3_set ()</title>
558
<indexterm zone="gimp-vector3-set"><primary>gimp_vector3_set</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_set (<link linkend="GimpVector3">GimpVector3</link> *vector,
562
559
<link linkend="gdouble">gdouble</link> x,
563
560
<link linkend="gdouble">gdouble</link> y,
564
561
<link linkend="gdouble">gdouble</link> z);</programlisting>
580
577
<listitem><simpara> the Z coordinate.
581
578
</simpara></listitem></varlistentry>
582
579
</variablelist></refsect2>
584
<title><anchor id="gimp-vector3-length" role="function"/>gimp_vector3_length ()</title>
585
<indexterm><primary>gimp_vector3_length</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector3_length (const <link linkend="GimpVector3">GimpVector3</link> *vector);</programlisting>
580
<refsect2 id="gimp-vector3-length" role="function">
581
<title>gimp_vector3_length ()</title>
582
<indexterm zone="gimp-vector3-length"><primary>gimp_vector3_length</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector3_length (const <link linkend="GimpVector3">GimpVector3</link> *vector);</programlisting>
587
584
Computes the length of a 3D vector.</para>
594
591
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the length of <parameter>vector</parameter> (a positive gdouble).
595
592
</simpara></listitem></varlistentry>
596
593
</variablelist></refsect2>
598
<title><anchor id="gimp-vector3-length-val" role="function"/>gimp_vector3_length_val ()</title>
599
<indexterm><primary>gimp_vector3_length_val</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector3_length_val (<link linkend="GimpVector3">GimpVector3</link> vector);</programlisting>
594
<refsect2 id="gimp-vector3-length-val" role="function">
595
<title>gimp_vector3_length_val ()</title>
596
<indexterm zone="gimp-vector3-length-val"><primary>gimp_vector3_length_val</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector3_length_val (<link linkend="GimpVector3">GimpVector3</link> vector);</programlisting>
601
598
This function is identical to <link linkend="gimp-vector3-length"><function>gimp_vector3_length()</function></link> but the vector
602
599
is passed by value rather than by reference.</para>
609
606
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the length of <parameter>vector</parameter> (a positive gdouble).
610
607
</simpara></listitem></varlistentry>
611
608
</variablelist></refsect2>
613
<title><anchor id="gimp-vector3-mul" role="function"/>gimp_vector3_mul ()</title>
614
<indexterm><primary>gimp_vector3_mul</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_mul (<link linkend="GimpVector3">GimpVector3</link> *vector,
609
<refsect2 id="gimp-vector3-mul" role="function">
610
<title>gimp_vector3_mul ()</title>
611
<indexterm zone="gimp-vector3-mul"><primary>gimp_vector3_mul</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_mul (<link linkend="GimpVector3">GimpVector3</link> *vector,
615
612
<link linkend="gdouble">gdouble</link> factor);</programlisting>
617
614
Multiplies each component of the <parameter>vector</parameter> by <parameter>factor</parameter>. Note that
626
623
<listitem><simpara> a scalar.
627
624
</simpara></listitem></varlistentry>
628
625
</variablelist></refsect2>
630
<title><anchor id="gimp-vector3-mul-val" role="function"/>gimp_vector3_mul_val ()</title>
631
<indexterm><primary>gimp_vector3_mul_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_mul_val (<link linkend="GimpVector3">GimpVector3</link> vector,
626
<refsect2 id="gimp-vector3-mul-val" role="function">
627
<title>gimp_vector3_mul_val ()</title>
628
<indexterm zone="gimp-vector3-mul-val"><primary>gimp_vector3_mul_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_mul_val (<link linkend="GimpVector3">GimpVector3</link> vector,
632
629
<link linkend="gdouble">gdouble</link> factor);</programlisting>
634
631
This function is identical to <link linkend="gimp-vector3-mul"><function>gimp_vector3_mul()</function></link> but the vector is
645
642
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the resulting <link linkend="GimpVector3"><type>GimpVector3</type></link>.
646
643
</simpara></listitem></varlistentry>
647
644
</variablelist></refsect2>
649
<title><anchor id="gimp-vector3-normalize" role="function"/>gimp_vector3_normalize ()</title>
650
<indexterm><primary>gimp_vector3_normalize</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_normalize (<link linkend="GimpVector3">GimpVector3</link> *vector);</programlisting>
645
<refsect2 id="gimp-vector3-normalize" role="function">
646
<title>gimp_vector3_normalize ()</title>
647
<indexterm zone="gimp-vector3-normalize"><primary>gimp_vector3_normalize</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_normalize (<link linkend="GimpVector3">GimpVector3</link> *vector);</programlisting>
652
649
Normalizes the <parameter>vector</parameter> so the length of the <parameter>vector</parameter> is 1.0. The nul
653
650
vector will not be changed.</para>
658
655
<listitem><simpara> a pointer to a <link linkend="GimpVector3"><type>GimpVector3</type></link>.
659
656
</simpara></listitem></varlistentry>
660
657
</variablelist></refsect2>
662
<title><anchor id="gimp-vector3-normalize-val" role="function"/>gimp_vector3_normalize_val ()</title>
663
<indexterm><primary>gimp_vector3_normalize_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_normalize_val (<link linkend="GimpVector3">GimpVector3</link> vector);</programlisting>
658
<refsect2 id="gimp-vector3-normalize-val" role="function">
659
<title>gimp_vector3_normalize_val ()</title>
660
<indexterm zone="gimp-vector3-normalize-val"><primary>gimp_vector3_normalize_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_normalize_val (<link linkend="GimpVector3">GimpVector3</link> vector);</programlisting>
665
662
This function is identical to <link linkend="gimp-vector3-normalize"><function>gimp_vector3_normalize()</function></link> but the
666
663
vector is passed by value rather than by reference.</para>
674
671
direction but with a length of 1.0.
675
672
</simpara></listitem></varlistentry>
676
673
</variablelist></refsect2>
678
<title><anchor id="gimp-vector3-neg" role="function"/>gimp_vector3_neg ()</title>
679
<indexterm><primary>gimp_vector3_neg</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_neg (<link linkend="GimpVector3">GimpVector3</link> *vector);</programlisting>
674
<refsect2 id="gimp-vector3-neg" role="function">
675
<title>gimp_vector3_neg ()</title>
676
<indexterm zone="gimp-vector3-neg"><primary>gimp_vector3_neg</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_neg (<link linkend="GimpVector3">GimpVector3</link> *vector);</programlisting>
681
678
Negates the <parameter>vector</parameter> (i.e. negate all its coordinates).</para>
686
683
<listitem><simpara> a pointer to a <link linkend="GimpVector3"><type>GimpVector3</type></link>.
687
684
</simpara></listitem></varlistentry>
688
685
</variablelist></refsect2>
690
<title><anchor id="gimp-vector3-neg-val" role="function"/>gimp_vector3_neg_val ()</title>
691
<indexterm><primary>gimp_vector3_neg_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_neg_val (<link linkend="GimpVector3">GimpVector3</link> vector);</programlisting>
686
<refsect2 id="gimp-vector3-neg-val" role="function">
687
<title>gimp_vector3_neg_val ()</title>
688
<indexterm zone="gimp-vector3-neg-val"><primary>gimp_vector3_neg_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_neg_val (<link linkend="GimpVector3">GimpVector3</link> vector);</programlisting>
693
690
This function is identical to <link linkend="gimp-vector3-neg"><function>gimp_vector3_neg()</function></link> but the vector
694
691
is passed by value rather than by reference.</para>
701
698
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the negated <link linkend="GimpVector3"><type>GimpVector3</type></link>.
702
699
</simpara></listitem></varlistentry>
703
700
</variablelist></refsect2>
705
<title><anchor id="gimp-vector3-add" role="function"/>gimp_vector3_add ()</title>
706
<indexterm><primary>gimp_vector3_add</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_add (<link linkend="GimpVector3">GimpVector3</link> *result,
701
<refsect2 id="gimp-vector3-add" role="function">
702
<title>gimp_vector3_add ()</title>
703
<indexterm zone="gimp-vector3-add"><primary>gimp_vector3_add</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_add (<link linkend="GimpVector3">GimpVector3</link> *result,
707
704
const <link linkend="GimpVector3">GimpVector3</link> *vector1,
708
705
const <link linkend="GimpVector3">GimpVector3</link> *vector2);</programlisting>
722
719
<listitem><simpara> a pointer to the second <link linkend="GimpVector3"><type>GimpVector3</type></link>.
723
720
</simpara></listitem></varlistentry>
724
721
</variablelist></refsect2>
726
<title><anchor id="gimp-vector3-add-val" role="function"/>gimp_vector3_add_val ()</title>
727
<indexterm><primary>gimp_vector3_add_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_add_val (<link linkend="GimpVector3">GimpVector3</link> vector1,
722
<refsect2 id="gimp-vector3-add-val" role="function">
723
<title>gimp_vector3_add_val ()</title>
724
<indexterm zone="gimp-vector3-add-val"><primary>gimp_vector3_add_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_add_val (<link linkend="GimpVector3">GimpVector3</link> vector1,
728
725
<link linkend="GimpVector3">GimpVector3</link> vector2);</programlisting>
730
727
This function is identical to <link linkend="gimp-vector3-add"><function>gimp_vector3_add()</function></link> but the vectors
741
738
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the resulting <link linkend="GimpVector3"><type>GimpVector3</type></link>.
742
739
</simpara></listitem></varlistentry>
743
740
</variablelist></refsect2>
745
<title><anchor id="gimp-vector3-sub" role="function"/>gimp_vector3_sub ()</title>
746
<indexterm><primary>gimp_vector3_sub</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_sub (<link linkend="GimpVector3">GimpVector3</link> *result,
741
<refsect2 id="gimp-vector3-sub" role="function">
742
<title>gimp_vector3_sub ()</title>
743
<indexterm zone="gimp-vector3-sub"><primary>gimp_vector3_sub</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_sub (<link linkend="GimpVector3">GimpVector3</link> *result,
747
744
const <link linkend="GimpVector3">GimpVector3</link> *vector1,
748
745
const <link linkend="GimpVector3">GimpVector3</link> *vector2);</programlisting>
762
759
<listitem><simpara> a pointer to the second <link linkend="GimpVector3"><type>GimpVector3</type></link>.
763
760
</simpara></listitem></varlistentry>
764
761
</variablelist></refsect2>
766
<title><anchor id="gimp-vector3-sub-val" role="function"/>gimp_vector3_sub_val ()</title>
767
<indexterm><primary>gimp_vector3_sub_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_sub_val (<link linkend="GimpVector3">GimpVector3</link> vector1,
762
<refsect2 id="gimp-vector3-sub-val" role="function">
763
<title>gimp_vector3_sub_val ()</title>
764
<indexterm zone="gimp-vector3-sub-val"><primary>gimp_vector3_sub_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_sub_val (<link linkend="GimpVector3">GimpVector3</link> vector1,
768
765
<link linkend="GimpVector3">GimpVector3</link> vector2);</programlisting>
770
767
This function is identical to <link linkend="gimp-vector3-sub"><function>gimp_vector3_sub()</function></link> but the vectors
781
778
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the resulting <link linkend="GimpVector3"><type>GimpVector3</type></link>.
782
779
</simpara></listitem></varlistentry>
783
780
</variablelist></refsect2>
785
<title><anchor id="gimp-vector3-inner-product" role="function"/>gimp_vector3_inner_product ()</title>
786
<indexterm><primary>gimp_vector3_inner_product</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector3_inner_product (const <link linkend="GimpVector3">GimpVector3</link> *vector1,
781
<refsect2 id="gimp-vector3-inner-product" role="function">
782
<title>gimp_vector3_inner_product ()</title>
783
<indexterm zone="gimp-vector3-inner-product"><primary>gimp_vector3_inner_product</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector3_inner_product (const <link linkend="GimpVector3">GimpVector3</link> *vector1,
787
784
const <link linkend="GimpVector3">GimpVector3</link> *vector2);</programlisting>
789
786
Computes the inner (dot) product of two 3D vectors. This product
800
797
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The inner product.
801
798
</simpara></listitem></varlistentry>
802
799
</variablelist></refsect2>
804
<title><anchor id="gimp-vector3-inner-product-val" role="function"/>gimp_vector3_inner_product_val ()</title>
805
<indexterm><primary>gimp_vector3_inner_product_val</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector3_inner_product_val (<link linkend="GimpVector3">GimpVector3</link> vector1,
800
<refsect2 id="gimp-vector3-inner-product-val" role="function">
801
<title>gimp_vector3_inner_product_val ()</title>
802
<indexterm zone="gimp-vector3-inner-product-val"><primary>gimp_vector3_inner_product_val</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gimp_vector3_inner_product_val (<link linkend="GimpVector3">GimpVector3</link> vector1,
806
803
<link linkend="GimpVector3">GimpVector3</link> vector2);</programlisting>
808
805
This function is identical to <link linkend="gimp-vector3-inner-product"><function>gimp_vector3_inner_product()</function></link> but the
819
816
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The inner product.
820
817
</simpara></listitem></varlistentry>
821
818
</variablelist></refsect2>
823
<title><anchor id="gimp-vector3-cross-product" role="function"/>gimp_vector3_cross_product ()</title>
824
<indexterm><primary>gimp_vector3_cross_product</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_cross_product (const <link linkend="GimpVector3">GimpVector3</link> *vector1,
819
<refsect2 id="gimp-vector3-cross-product" role="function">
820
<title>gimp_vector3_cross_product ()</title>
821
<indexterm zone="gimp-vector3-cross-product"><primary>gimp_vector3_cross_product</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_cross_product (const <link linkend="GimpVector3">GimpVector3</link> *vector1,
825
822
const <link linkend="GimpVector3">GimpVector3</link> *vector2);</programlisting>
827
824
Compute the cross product of two vectors. The result is a
844
841
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The cross product.
845
842
</simpara></listitem></varlistentry>
846
843
</variablelist></refsect2>
848
<title><anchor id="gimp-vector3-cross-product-val" role="function"/>gimp_vector3_cross_product_val ()</title>
849
<indexterm><primary>gimp_vector3_cross_product_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_cross_product_val (<link linkend="GimpVector3">GimpVector3</link> vector1,
844
<refsect2 id="gimp-vector3-cross-product-val" role="function">
845
<title>gimp_vector3_cross_product_val ()</title>
846
<indexterm zone="gimp-vector3-cross-product-val"><primary>gimp_vector3_cross_product_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_cross_product_val (<link linkend="GimpVector3">GimpVector3</link> vector1,
850
847
<link linkend="GimpVector3">GimpVector3</link> vector2);</programlisting>
852
849
This function is identical to <link linkend="gimp-vector3-cross-product"><function>gimp_vector3_cross_product()</function></link> but the
863
860
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The cross product.
864
861
</simpara></listitem></varlistentry>
865
862
</variablelist></refsect2>
867
<title><anchor id="gimp-vector3-rotate" role="function"/>gimp_vector3_rotate ()</title>
868
<indexterm><primary>gimp_vector3_rotate</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_rotate (<link linkend="GimpVector3">GimpVector3</link> *vector,
863
<refsect2 id="gimp-vector3-rotate" role="function">
864
<title>gimp_vector3_rotate ()</title>
865
<indexterm zone="gimp-vector3-rotate"><primary>gimp_vector3_rotate</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector3_rotate (<link linkend="GimpVector3">GimpVector3</link> *vector,
869
866
<link linkend="gdouble">gdouble</link> alpha,
870
867
<link linkend="gdouble">gdouble</link> beta,
871
868
<link linkend="gdouble">gdouble</link> gamma);</programlisting>
894
891
<listitem><simpara> the angle (in radian) of rotation around the X axis.
895
892
</simpara></listitem></varlistentry>
896
893
</variablelist></refsect2>
898
<title><anchor id="gimp-vector3-rotate-val" role="function"/>gimp_vector3_rotate_val ()</title>
899
<indexterm><primary>gimp_vector3_rotate_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_rotate_val (<link linkend="GimpVector3">GimpVector3</link> vector,
894
<refsect2 id="gimp-vector3-rotate-val" role="function">
895
<title>gimp_vector3_rotate_val ()</title>
896
<indexterm zone="gimp-vector3-rotate-val"><primary>gimp_vector3_rotate_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector3_rotate_val (<link linkend="GimpVector3">GimpVector3</link> vector,
900
897
<link linkend="gdouble">gdouble</link> alpha,
901
898
<link linkend="gdouble">gdouble</link> beta,
902
899
<link linkend="gdouble">gdouble</link> gamma);</programlisting>
921
918
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the rotated vector.
922
919
</simpara></listitem></varlistentry>
923
920
</variablelist></refsect2>
925
<title><anchor id="gimp-vector-2d-to-3d" role="function"/>gimp_vector_2d_to_3d ()</title>
926
<indexterm><primary>gimp_vector_2d_to_3d</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector_2d_to_3d (<link linkend="gint">gint</link> sx,
921
<refsect2 id="gimp-vector-2d-to-3d" role="function">
922
<title>gimp_vector_2d_to_3d ()</title>
923
<indexterm zone="gimp-vector-2d-to-3d"><primary>gimp_vector_2d_to_3d</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector_2d_to_3d (<link linkend="gint">gint</link> sx,
927
924
<link linkend="gint">gint</link> sy,
928
925
<link linkend="gint">gint</link> w,
929
926
<link linkend="gint">gint</link> h,
968
965
<listitem><simpara> the resulting point.
969
966
</simpara></listitem></varlistentry>
970
967
</variablelist></refsect2>
972
<title><anchor id="gimp-vector-2d-to-3d-val" role="function"/>gimp_vector_2d_to_3d_val ()</title>
973
<indexterm><primary>gimp_vector_2d_to_3d_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector_2d_to_3d_val (<link linkend="gint">gint</link> sx,
968
<refsect2 id="gimp-vector-2d-to-3d-val" role="function">
969
<title>gimp_vector_2d_to_3d_val ()</title>
970
<indexterm zone="gimp-vector-2d-to-3d-val"><primary>gimp_vector_2d_to_3d_val</primary></indexterm><programlisting><link linkend="GimpVector3">GimpVector3</link> gimp_vector_2d_to_3d_val (<link linkend="gint">gint</link> sx,
974
971
<link linkend="gint">gint</link> sy,
975
972
<link linkend="gint">gint</link> w,
976
973
<link linkend="gint">gint</link> h,
1012
1009
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the computed <link linkend="GimpVector3"><type>GimpVector3</type></link> point.
1013
1010
</simpara></listitem></varlistentry>
1014
1011
</variablelist></refsect2>
1016
<title><anchor id="gimp-vector-3d-to-2d" role="function"/>gimp_vector_3d_to_2d ()</title>
1017
<indexterm><primary>gimp_vector_3d_to_2d</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector_3d_to_2d (<link linkend="gint">gint</link> sx,
1012
<refsect2 id="gimp-vector-3d-to-2d" role="function">
1013
<title>gimp_vector_3d_to_2d ()</title>
1014
<indexterm zone="gimp-vector-3d-to-2d"><primary>gimp_vector_3d_to_2d</primary></indexterm><programlisting><link linkend="void">void</link> gimp_vector_3d_to_2d (<link linkend="gint">gint</link> sx,
1018
1015
<link linkend="gint">gint</link> sy,
1019
1016
<link linkend="gint">gint</link> w,
1020
1017
<link linkend="gint">gint</link> h,