[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: qhull6 and octave
From: |
Brad Barber |
Subject: |
Re: qhull6 and octave |
Date: |
Thu, 01 Dec 2011 20:18:59 -0500 |
Hi Tatsuro,
Did you make Petr's change (compiling the test program with -Dqh_QHpointer)?
If not that's may be the source of your problem. If it isn't, you'll need to
provide more information since I don't have octave running here and can't use
debian builds (its a Windows system).
A good approach is to compare a trace of your test program, with the
corresponding trace from Qhull. Option 'T1' gives a high level view, option
'T4' gives most of the details. Option 'T5' includes memory management.
There's various commands to turn on tracing according to a trigger event.
--Brad
P.S: email to octave-help bounces. What should the address be?
At 03:01 AM 12/1/2011, Tatsuro MATSUOKA wrote:
>Hello
>
>On MinGWï¼qhull2011 gives errors.
>(The qhull library was created using GCC-4.6.1)
>
>For example,
>src\DLD-FUNCTIONS\convhulln.cc ......................... PASS 0/3 FAIL 3
>
>Â ***** testif HAVE_QHULLÂ cube = [0 0 0;1 0 0;1 1 0;0 1 0;0 0 1;1 0 1;1 1
>1;0 1 1];Â [h, v] = convhulln (cube);Â
> assert (size (h), [6 4]);Â Â h = sortrows (sort (h, 2), [1:4]);Â assert (h,
> [1 2 3 4; 1 2 5 6; 1 4 5 8; 2 3 6 7; 3 4 7 8; 5 6 7 8]);Â assert (v, 1,
> 10*eps);!!!!! test failedassert (size (h),[6, 4]) expected  6  4but gotÂ
>  0  3values do not match ***** testif HAVE_QHULL cube = [0 0 0;1 0 0;1
> 1 0;0 1 0;0 0 1;1 0 1;1 1 1;0 1 1];Â [h, v] = convhulln (cube, "QJ");Â assert
> (size (h), [12 3]);Â Â assert (sortrows (sort (h, 2), [1:3]), [1 2 4; 1 2 5;
> 1 4 5; 2 3 4; 2 3 6; 2 5 6; 3 4 8; 3 6 7; 3 7 8; 4 5 8; 5 6 8; 6 7 8]);Â
> assert (v, 1.0, 1e6*eps);!!!!! test failedassert (size (h),[12, 3]) expectedÂ
>  12   3but got  0  3values do not match ***** testif HAVE_QHULLÂ
> tetrahedron = [1 1 1;-1 -1 1;-1 1 -1;1 -1 -1];Â [h, v] = convhulln
> (tetrahedron);Â h = sortrows (sort (h, 2), [1 2 3]);Â assert (h, [1 2 3;1 2
> 4; 1 3 4; 2 3
> 4]);Â assert (v, 8/3, 10*eps);!!!!! test failedassert (h,[1, 2, 3; 1, 2, 4;
> 1, 3, 4; 2, 3, 4]) expected  1  2  3  1  2  4  1  3  4Â
> Â 2 Â 3 Â 4but got[](0x3)Dimensions don't match
>This error did not occur on qull2010.
>
>Regards
>
>Tatsuro--- On Thu, 2011/12/1, Brad Barber wrote:
>
>> Hi Petr,
>>
>> Glad it worked.   Without seeing the whole build system that was used,
>> here's my guess from what you showed me.
>>
>> Some news first. I've released qhull 2011.2 with several changes, mostly
>> minor.   Octave may be interested in the fix to qh_new_qhull (call
>> qh_prepare_output if !outfile). qh_prepare_output handles options that are
>> processed after building the convex hull (e.g., compute area and volume).Â
>> There's a new, simple Makefile for static builds (in src/libqhull).  Â
>>
>> Please let me know when the Debian builds are available. The qhull
>> download page is rather out-of-date. Can someone produce a rpm build?Â
>> I've also lost my archive/mirror site for old Qhull downloads. Let me know
>> if someone would like to host it.
>> Â Â http://www.qhull.org/download/
>>
>> qhull5 was apparently built with qh_QHpointer=0 [user.h]. The global
>> data structure for qhull is defined as a static array qh_qh [libqhull.h].Â
>> qhull6 was built with qh_QHpointer=1. The global data structure for qhull
>> is allocated on the heap with a pointer from the global variable qh_qh.  Â
>> This allows for multiple global data structures that can be swapped by
>> updating qh_qh.   Two other pointers/static structures are similarly
>> defined (qh_qhmem for the memory allocator and qh_qhstat for statistics).Â
>>
>> The extra flexibility comes at some cost. The last time I measured it, the
>> cost was 4% overhead in space and 4% in time. The C++ interface for qhull
>> uses qh_QHpointer=1.  The same effect could be achieved by copying data
>> from statically defined structures to/from the heap.
>>
>> The code references these representations with the 'qh', 'qhmem', and
>> 'qhstat' macros. That's why the code has an odd appearance. These macros
>> allow the data structures to be allocated elsewhere (e.g., thread-local
>> storage or an extra function parameter).
>>
>> Many thanks for keeping Qhull part of Octave.
>>
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â --Brad
>>
>> At 06:09 AM 11/30/2011, Petr Gajdos wrote:
>> >Hi Brad,
>> >
>> >very well, defining qh_QHpointer to 1, i. e.
>> >
>> >#include <stdio.h>
>> >#if defined QHULL5
>> >#include <qhull/qhull_a.h>
>> >#warning qhull5
>> >#else
>> >#define qh_QHpointer 1
>> >#include <libqhull/qhull_a.h>
>> >#warning qhull6
>> >#endif
>> >...
>> >
>> >gives same results for qhull6 as for qhull5.
>> >
>> >When you find time, could you please give me
>> >an explanation (maybe cc octave-help@ too)?
>> >
>> >Have a nice day & thanks a lot,
>> >Petr
>> >
>> >
>>
>>
>
>
>
>-----
>No virus found in this message.
>Checked by AVG - www.avg.com
>Version: 10.0.1411 / Virus Database: 2092/4049 - Release Date: 11/30/11